A few patches from Erik Hovland, turning strncpy() into safe_strncpy() and
[oweals/busybox.git] / archival / unzip.c
index 0b1e6f997da43e654374d593f9cec92d33c64ff5..8ba39e9af936440d576cd36b9cae0ffd835b6a77 100644 (file)
@@ -86,7 +86,7 @@ static void unzip_skip(int fd, off_t skip)
 static void unzip_read(int fd, void *buf, size_t count)
 {
        if (bb_xread(fd, buf, count) != count) {
-               bb_error_msg_and_die("Read failure");
+               bb_error_msg_and_die(bb_msg_read_error);
        }
 }
 
@@ -95,7 +95,7 @@ static void unzip_create_leading_dirs(char *fn)
        /* Create all leading directories */
        char *name = bb_xstrdup(fn);
        if (bb_make_directory(dirname(name), 0777, FILEUTILS_RECUR)) {
-               bb_error_msg_and_die("Failed to create directory");
+               bb_error_msg_and_die("Exiting"); /* bb_make_directory is noisy */
        }
        free(name);
 }
@@ -275,16 +275,15 @@ int unzip_main(int argc, char **argv)
 
                /* Read filename */
                free(dst_fn);
-               dst_fn = xmalloc(zip_header.formated.filename_len + 1);
+               dst_fn = xzalloc(zip_header.formated.filename_len + 1);
                unzip_read(src_fd, dst_fn, zip_header.formated.filename_len);
-               dst_fn[zip_header.formated.filename_len] = 0;
 
                /* Skip extra header bytes */
                unzip_skip(src_fd, zip_header.formated.extra_len);
 
                if ((verbosity == v_list) && !list_header_done){
-                       printf("  Length     Date   Time    Name\n");
-                       printf(" --------    ----   ----    ----\n");
+                       printf("  Length     Date   Time    Name\n"
+                                  " --------    ----   ----    ----\n");
                        list_header_done = 1;
                }
 
@@ -322,7 +321,7 @@ int unzip_main(int argc, char **argv)
                                        }
                                        unzip_create_leading_dirs(dst_fn);
                                        if (bb_make_directory(dst_fn, 0777, 0)) {
-                                               bb_error_msg_and_die("Failed to create directory");
+                                               bb_error_msg_and_die("Exiting");
                                        }
                                } else {
                                        if (!S_ISDIR(stat_buf.st_mode)) {