Thanks to
[oweals/opkg-lede.git] / libbb / unarchive.c
index 24578241ad5e762bad9b3a6d30d7cc57612705f9..24877e75452785aa426efc91a4f1ca26de987dd2 100644 (file)
@@ -84,7 +84,6 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
        char *full_link_name = NULL;
        char *buffer = NULL;
        struct utimbuf t;
-        int res;
 
 
        /* prefix doesnt have to be a proper path it may prepend 
@@ -607,6 +606,10 @@ file_header_t *get_header_tar(FILE *tar_stream)
                 tar_entry->name = concat_path_file(tar.formated.prefix, tar.formated.name);
         }
 
+       if (strlen(tar_entry->name) > 100) {
+               tar_entry->name[100] = 0;
+       }
+
        // tar_entry->name = xstrdup(tar.formated.name);
 
 /*
@@ -715,7 +718,7 @@ char *deb_extract(const char *package_filename, FILE *out_stream,
        char *output_buffer = NULL;
        char *ared_file = NULL;
        char ar_magic[8];
-       int gunzip_pid;
+       int gunzip_pid = 0;
 
        if (filename != NULL) {
                file_list = xmalloc(sizeof(char *) * 2);
@@ -755,6 +758,8 @@ char *deb_extract(const char *package_filename, FILE *out_stream,
                                output_buffer = unarchive(uncompressed_stream, out_stream, get_header_tar, free_header_tar, extract_function, prefix, file_list);
                        }
                        seek_sub_file(deb_stream, ar_header->size);
+                       free (ar_header->name);
+                       free (ar_header);
                }
                gz_close(gunzip_pid);
                fclose(deb_stream);