Thanks to
[oweals/opkg-lede.git] / libbb / unarchive.c
index 5fc5725e06114fa67f54e48b58d3947e0c9b8846..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);
 
 /*
@@ -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);