diff options
| author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-07-11 15:43:03 +0000 |
|---|---|---|
| committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-07-11 15:43:03 +0000 |
| commit | 0e084e45ee8af16e254f3176ae28a2552c7bcaca (patch) | |
| tree | 70aa7559c6b830ec0312fb7855826eea8e79ffa7 /libbb | |
| parent | 7c73ad22025b668c3b04213a28c2df9f8a23c9f8 (diff) | |
| download | busybox-w32-0e084e45ee8af16e254f3176ae28a2552c7bcaca.tar.gz busybox-w32-0e084e45ee8af16e254f3176ae28a2552c7bcaca.tar.bz2 busybox-w32-0e084e45ee8af16e254f3176ae28a2552c7bcaca.zip | |
Fix bug where it wasnt returning the last line of a multiline field
git-svn-id: svn://busybox.net/trunk/busybox@3069 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb')
| -rw-r--r-- | libbb/read_package_field.c | 23 |
1 files 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 @@ | |||
| 7 | */ | 7 | */ |
| 8 | extern char *read_package_field(const char *package_buffer) | 8 | extern char *read_package_field(const char *package_buffer) |
| 9 | { | 9 | { |
| 10 | char *field = NULL; | ||
| 11 | int field_length = 0; | 10 | int field_length = 0; |
| 12 | int buffer_length = 0; | 11 | int buffer_length = 0; |
| 13 | 12 | ||
| 13 | if (package_buffer == NULL) { | ||
| 14 | return(NULL); | ||
| 15 | } | ||
| 14 | buffer_length = strlen(package_buffer); | 16 | buffer_length = strlen(package_buffer); |
| 15 | 17 | field_length = strcspn(package_buffer, "\n"); | |
| 16 | while ((field = strchr(&package_buffer[field_length], '\n')) != NULL) { | 18 | while (field_length < buffer_length) { |
| 17 | field_length = buffer_length - strlen(field); | ||
| 18 | if (package_buffer[field_length + 1] != ' ') { | 19 | if (package_buffer[field_length + 1] != ' ') { |
| 19 | break; | 20 | return(xstrndup(package_buffer, field_length)); |
| 20 | } else { | 21 | } |
| 21 | field_length++; | 22 | field_length++; |
| 22 | } | 23 | field_length += strcspn(&package_buffer[field_length], "\n"); |
| 23 | } | ||
| 24 | if (field_length == 0) { | ||
| 25 | return(NULL); | ||
| 26 | } else { | ||
| 27 | return(xstrndup(package_buffer, field_length)); | ||
| 28 | } | 24 | } |
| 25 | return(xstrdup(package_buffer)); | ||
| 29 | } | 26 | } |
| 30 | 27 | ||
