Use the correct buffer when calling dirname, improve an error message, and
plug some memory leaks. Patch by Laurence Anderson.
This commit is contained in:
parent
28d0ac13d1
commit
5078919981
@ -129,7 +129,7 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
|
|||||||
if (function & extract_create_leading_dirs) { /* Create leading directories with default umask */
|
if (function & extract_create_leading_dirs) { /* Create leading directories with default umask */
|
||||||
char *buf, *parent;
|
char *buf, *parent;
|
||||||
buf = xstrdup(full_name);
|
buf = xstrdup(full_name);
|
||||||
parent = dirname(full_name);
|
parent = dirname(buf);
|
||||||
if (make_directory (parent, -1, FILEUTILS_RECUR) != 0) {
|
if (make_directory (parent, -1, FILEUTILS_RECUR) != 0) {
|
||||||
if ((function & extract_quiet) != extract_quiet) {
|
if ((function & extract_quiet) != extract_quiet) {
|
||||||
error_msg("couldn't create leading directories");
|
error_msg("couldn't create leading directories");
|
||||||
@ -160,7 +160,7 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
|
|||||||
if (stat_res != 0) {
|
if (stat_res != 0) {
|
||||||
if (mkdir(full_name, file_entry->mode) < 0) {
|
if (mkdir(full_name, file_entry->mode) < 0) {
|
||||||
if ((function & extract_quiet) != extract_quiet) {
|
if ((function & extract_quiet) != extract_quiet) {
|
||||||
perror_msg("extract_archive: ");
|
perror_msg("extract_archive: %s", full_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -266,6 +266,9 @@ char *unarchive(FILE *src_stream, FILE *out_stream, file_header_t *(*get_headers
|
|||||||
/* seek past the data entry */
|
/* seek past the data entry */
|
||||||
seek_sub_file(src_stream, file_entry->size);
|
seek_sub_file(src_stream, file_entry->size);
|
||||||
}
|
}
|
||||||
|
free(file_entry->name); /* may be null, but doesn't matter */
|
||||||
|
free(file_entry->link_name);
|
||||||
|
free(file_entry);
|
||||||
}
|
}
|
||||||
return(buffer);
|
return(buffer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user