diff options
author | Denis Vlasenko | 2007-03-31 10:17:24 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-03-31 10:17:24 +0000 |
commit | 666c40c9fce062f7466f424176ef2d0b8f581b38 (patch) | |
tree | a5f1c60bc6d1666086fd23df2edb2dd2935281ab /archival | |
parent | 7b881c716892bfe2fc0edecf2887e0540b25835f (diff) | |
download | busybox-666c40c9fce062f7466f424176ef2d0b8f581b38.zip busybox-666c40c9fce062f7466f424176ef2d0b8f581b38.tar.gz |
unzip: fix xstrndup bug (xstrndup(s,n) can allocate less than n bytes!)
Diffstat (limited to 'archival')
-rw-r--r-- | archival/unzip.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/archival/unzip.c b/archival/unzip.c index 5e63170..8a9034f 100644 --- a/archival/unzip.c +++ b/archival/unzip.c @@ -134,7 +134,8 @@ int unzip_main(int argc, char **argv) break; case 1 : /* The zip file */ - src_fn = xstrndup(optarg, strlen(optarg)+4); + src_fn = xmalloc(strlen(optarg)+4); + strcpy(src_fn, optarg); opt_range++; break; @@ -195,7 +196,7 @@ int unzip_main(int argc, char **argv) src_fd = open(src_fn, O_RDONLY); } if (src_fd == -1) { - src_fn[orig_src_fn_len] = 0; + src_fn[orig_src_fn_len] = '\0'; bb_error_msg_and_die("cannot open %s, %s.zip, %s.ZIP", src_fn, src_fn, src_fn); } } |