diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2001-07-11 15:43:03 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2001-07-11 15:43:03 +0000 |
commit | 481d19b38e068e7db8459cb0e108f8049ce5919d (patch) | |
tree | 70aa7559c6b830ec0312fb7855826eea8e79ffa7 /libbb | |
parent | daf0b78e1a063fd90524d48aee4895c92a55f473 (diff) | |
download | busybox-w32-481d19b38e068e7db8459cb0e108f8049ce5919d.tar.gz busybox-w32-481d19b38e068e7db8459cb0e108f8049ce5919d.tar.bz2 busybox-w32-481d19b38e068e7db8459cb0e108f8049ce5919d.zip |
Fix bug where it wasnt returning the last line of a multiline field
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 | ||