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 | ||