aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-12-26 20:44:45 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-12-26 20:44:45 +0000
commitabee3d0e0dc7c7e4b733b0145c56bf8159a37a69 (patch)
treebf000d88c4044106f689060ee795d49f9a9116f6 /archival
parentd55268d0d497856a34f732aca158d07276358ab6 (diff)
downloadbusybox-w32-abee3d0e0dc7c7e4b733b0145c56bf8159a37a69.tar.gz
busybox-w32-abee3d0e0dc7c7e4b733b0145c56bf8159a37a69.tar.bz2
busybox-w32-abee3d0e0dc7c7e4b733b0145c56bf8159a37a69.zip
Fix xmalloc_fgets_str so that it really does NOT strip terminator.
Add xmalloc_fgetline_str which does strip terminator, and use it in dpkg instead of xmalloc_fgets_str. netstat: use xmalloc_fgets_str - allows to eat strings with NULs (this fixes bug with some weird /proc/net/unix input) function old new delta xmalloc_fgets_internal - 191 +191 xmalloc_fgetline_str - 18 +18 do_info 116 120 +4 unix_do_one 451 447 -4 tcp_do_one 423 419 -4 send_tree 369 365 -4 xmalloc_fgets_str 178 15 -163 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 1/4 up/down: 213/-175) Total: 38 bytes text data bss dec hex filename 778445 832 7344 786621 c00bd busybox_old 778483 832 7344 786659 c00e3 busybox_unstripped
Diffstat (limited to 'archival')
-rw-r--r--archival/dpkg.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/archival/dpkg.c b/archival/dpkg.c
index 27512eb5d..1db53f494 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -602,7 +602,7 @@ static unsigned fill_package_struct(char *control_buffer)
602 &field_name, &field_value); 602 &field_name, &field_value);
603 603
604 if (field_name == NULL) { 604 if (field_name == NULL) {
605 goto fill_package_struct_cleanup; /* Oh no, the dreaded goto statement! */ 605 goto fill_package_struct_cleanup;
606 } 606 }
607 607
608 field_num = index_in_strings(field_names, field_name); 608 field_num = index_in_strings(field_names, field_name);
@@ -745,7 +745,7 @@ static void index_status_file(const char *filename)
745 unsigned status_num; 745 unsigned status_num;
746 746
747 status_file = xfopen(filename, "r"); 747 status_file = xfopen(filename, "r");
748 while ((control_buffer = xmalloc_fgets_str(status_file, "\n\n")) != NULL) { 748 while ((control_buffer = xmalloc_fgetline_str(status_file, "\n\n")) != NULL) {
749 const unsigned package_num = fill_package_struct(control_buffer); 749 const unsigned package_num = fill_package_struct(control_buffer);
750 if (package_num != -1) { 750 if (package_num != -1) {
751 status_node = xmalloc(sizeof(status_node_t)); 751 status_node = xmalloc(sizeof(status_node_t));
@@ -798,7 +798,7 @@ static void write_status_file(deb_file_t **deb_file)
798 int i = 0; 798 int i = 0;
799 799
800 /* Update previously known packages */ 800 /* Update previously known packages */
801 while ((control_buffer = xmalloc_fgets_str(old_status_file, "\n\n")) != NULL) { 801 while ((control_buffer = xmalloc_fgetline_str(old_status_file, "\n\n")) != NULL) {
802 tmp_string = strstr(control_buffer, "Package:"); 802 tmp_string = strstr(control_buffer, "Package:");
803 if (tmp_string == NULL) { 803 if (tmp_string == NULL) {
804 continue; 804 continue;