aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-03-31 10:17:24 +0000
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-03-31 10:17:24 +0000
commit25c5b8256809af7c688903c3c0ab09b51b79f3bf (patch)
treea5f1c60bc6d1666086fd23df2edb2dd2935281ab
parent3bd2d2b42a3945988e246f55c214163b0b3b7633 (diff)
downloadbusybox-w32-25c5b8256809af7c688903c3c0ab09b51b79f3bf.tar.gz
busybox-w32-25c5b8256809af7c688903c3c0ab09b51b79f3bf.tar.bz2
busybox-w32-25c5b8256809af7c688903c3c0ab09b51b79f3bf.zip
unzip: fix xstrndup bug (xstrndup(s,n) can allocate less than n bytes!)
git-svn-id: svn://busybox.net/trunk/busybox@18285 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--archival/unzip.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/archival/unzip.c b/archival/unzip.c
index 5e631705c..8a9034fc3 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -134,7 +134,8 @@ int unzip_main(int argc, char **argv)
134 break; 134 break;
135 135
136 case 1 : /* The zip file */ 136 case 1 : /* The zip file */
137 src_fn = xstrndup(optarg, strlen(optarg)+4); 137 src_fn = xmalloc(strlen(optarg)+4);
138 strcpy(src_fn, optarg);
138 opt_range++; 139 opt_range++;
139 break; 140 break;
140 141
@@ -195,7 +196,7 @@ int unzip_main(int argc, char **argv)
195 src_fd = open(src_fn, O_RDONLY); 196 src_fd = open(src_fn, O_RDONLY);
196 } 197 }
197 if (src_fd == -1) { 198 if (src_fd == -1) {
198 src_fn[orig_src_fn_len] = 0; 199 src_fn[orig_src_fn_len] = '\0';
199 bb_error_msg_and_die("cannot open %s, %s.zip, %s.ZIP", src_fn, src_fn, src_fn); 200 bb_error_msg_and_die("cannot open %s, %s.zip, %s.ZIP", src_fn, src_fn, src_fn);
200 } 201 }
201 } 202 }