diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-26 08:17:45 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-26 08:17:45 +0100 |
| commit | da879ec2e967e2f04f6269e506308dc9cc8b97ae (patch) | |
| tree | 7d00268ef7a17749ae1241453260efe407e810a3 /modutils | |
| parent | 1aaf1cb096e2d8d0d1c21e44e425072c122e6a7e (diff) | |
| download | busybox-w32-da879ec2e967e2f04f6269e506308dc9cc8b97ae.tar.gz busybox-w32-da879ec2e967e2f04f6269e506308dc9cc8b97ae.tar.bz2 busybox-w32-da879ec2e967e2f04f6269e506308dc9cc8b97ae.zip | |
modprobe: protect against possible SEGV
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'modutils')
| -rw-r--r-- | modutils/modprobe.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c index 2860ae05d..f339fbdbe 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c | |||
| @@ -80,12 +80,14 @@ static int read_config(const char *path); | |||
| 80 | static char *gather_options_str(char *opts, const char *append) | 80 | static char *gather_options_str(char *opts, const char *append) |
| 81 | { | 81 | { |
| 82 | /* Speed-optimized. We call gather_options_str many times. */ | 82 | /* Speed-optimized. We call gather_options_str many times. */ |
| 83 | if (opts == NULL) { | 83 | if (append) { |
| 84 | opts = xstrdup(append); | 84 | if (opts == NULL) { |
| 85 | } else { | 85 | opts = xstrdup(append); |
| 86 | int optlen = strlen(opts); | 86 | } else { |
| 87 | opts = xrealloc(opts, optlen + strlen(append) + 2); | 87 | int optlen = strlen(opts); |
| 88 | sprintf(opts + optlen, " %s", append); | 88 | opts = xrealloc(opts, optlen + strlen(append) + 2); |
| 89 | sprintf(opts + optlen, " %s", append); | ||
| 90 | } | ||
| 89 | } | 91 | } |
| 90 | return opts; | 92 | return opts; |
| 91 | } | 93 | } |
