[PATCH 2/4] compare_string_array: code shrink
Martin Lewis
martin.lewis.x84 at gmail.com
Thu Jun 11 20:45:58 UTC 2020
Code shrink and prevention of possible out of bounds access.
function old new delta
nth_string 36 26 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-10) Total: -10 bytes
text data bss dec hex filename
981342 16915 1872 1000129 f42c1 busybox_old
981332 16915 1872 1000119 f42b7 busybox_unstripped
Signed-off-by: Martin Lewis <martin.lewis.x84 at gmail.com>
---
libbb/compare_string_array.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c
index 01a9df0e2..a06e57d3d 100644
--- a/libbb/compare_string_array.c
+++ b/libbb/compare_string_array.c
@@ -117,8 +117,11 @@ int FAST_FUNC index_in_substrings(const char *strings, const char *key)
const char* FAST_FUNC nth_string(const char *strings, int n)
{
while (n) {
- n--;
- strings += strlen(strings) + 1;
+ if (*strings++ == '\0') {
+ if (*strings == '\0') /* reached end of strings */
+ break;
+ n--;
+ }
}
return strings;
}
--
2.11.0
More information about the busybox
mailing list