unzip: fix xstrndup bug (xstrndup(s,n) can allocate less than n bytes!)
authorDenis Vlasenko <vda.linux@googlemail.com>
Sat, 31 Mar 2007 10:17:24 +0000 (10:17 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sat, 31 Mar 2007 10:17:24 +0000 (10:17 -0000)
archival/unzip.c

index 5e631705cff0684ff35ba0d16bf8d19b21abe63e..8a9034fc3d228fe876ee065b0ef788997279405d 100644 (file)
@@ -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);
                }
        }