From 481d19b38e068e7db8459cb0e108f8049ce5919d Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Wed, 11 Jul 2001 15:43:03 +0000 Subject: [PATCH] Fix bug where it wasnt returning the last line of a multiline field --- libbb/read_package_field.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) 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)); } -- 2.25.1