From: Glenn L McGrath Date: Wed, 11 Jul 2001 15:43:03 +0000 (-0000) Subject: Fix bug where it wasnt returning the last line of a multiline field X-Git-Tag: 0_60_0~81 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=481d19b38e068e7db8459cb0e108f8049ce5919d;p=oweals%2Fbusybox.git Fix bug where it wasnt returning the last line of a multiline field --- diff --git a/libbb/read_package_field.c b/libbb/read_package_field.c index 246285f8e..3715230fe 100644 --- a/libbb/read_package_field.c +++ b/libbb/read_package_field.c @@ -7,24 +7,21 @@ */ extern char *read_package_field(const char *package_buffer) { - char *field = NULL; int field_length = 0; int buffer_length = 0; + if (package_buffer == NULL) { + return(NULL); + } buffer_length = strlen(package_buffer); - - while ((field = strchr(&package_buffer[field_length], '\n')) != NULL) { - field_length = buffer_length - strlen(field); + field_length = strcspn(package_buffer, "\n"); + while (field_length < buffer_length) { if (package_buffer[field_length + 1] != ' ') { - break; - } else { - field_length++; - } - } - if (field_length == 0) { - return(NULL); - } else { - return(xstrndup(package_buffer, field_length)); + return(xstrndup(package_buffer, field_length)); + } + field_length++; + field_length += strcspn(&package_buffer[field_length], "\n"); } + return(xstrdup(package_buffer)); }