diff options
author | Denis Vlasenko | 2007-06-13 06:47:47 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-06-13 06:47:47 +0000 |
commit | d67cef2425fb5e75b75d52d9a308da6d29cd7a0d (patch) | |
tree | 5d034f518dfae9a933a701e8c42da4acbf0cb42d /modutils/insmod.c | |
parent | f5f75c5e82d47613847c356664e47c4be69e73aa (diff) | |
download | busybox-d67cef2425fb5e75b75d52d9a308da6d29cd7a0d.zip busybox-d67cef2425fb5e75b75d52d9a308da6d29cd7a0d.tar.gz |
hush: fix read builtin to not read ahead past eol and to not use
insane amounts of stack. Testsuite updated.
Diffstat (limited to 'modutils/insmod.c')
-rw-r--r-- | modutils/insmod.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/modutils/insmod.c b/modutils/insmod.c index a81ca7f..b9d8a02 100644 --- a/modutils/insmod.c +++ b/modutils/insmod.c @@ -4262,6 +4262,7 @@ int insmod_ng_main(int argc, char **argv) { long ret; size_t len; + int optlen; void *map; char *filename, *options; @@ -4270,12 +4271,12 @@ int insmod_ng_main(int argc, char **argv) bb_show_usage(); /* Rest is options */ - options = xstrdup(""); + options = xzalloc(1); + optlen = 0; while (*++argv) { - int optlen = strlen(options); options = xrealloc(options, optlen + 2 + strlen(*argv) + 2); /* Spaces handled by "" pairs, but no way of escaping quotes */ - sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv); + optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv); } #if 0 |