projects
/
project
/
opkg-lede.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Check the unzip child process for errors and pass the upwards. Also, avoid child...
[project/opkg-lede.git]
/
libbb
/
unarchive.c
diff --git
a/libbb/unarchive.c
b/libbb/unarchive.c
index 3108f37bae03b2a55bd915451ec302bca86b5c52..c3630b070960c0516785c165c4634f588d716d9e 100644
(file)
--- a/
libbb/unarchive.c
+++ b/
libbb/unarchive.c
@@
-624,6
+624,7
@@
deb_extract(const char *package_filename, FILE *out_stream,
char *output_buffer = NULL;
char *ared_file = NULL;
char ar_magic[8];
char *output_buffer = NULL;
char *ared_file = NULL;
char ar_magic[8];
+ int gz_err;
*err = 0;
*err = 0;
@@
-678,7
+679,9
@@
deb_extract(const char *package_filename, FILE *out_stream,
extract_function, prefix,
file_list, err);
fclose(uncompressed_stream);
extract_function, prefix,
file_list, err);
fclose(uncompressed_stream);
- gz_close(gunzip_pid);
+ gz_err = gz_close(gunzip_pid);
+ if (gz_err)
+ *err = -1;
free_header_ar(ar_header);
break;
}
free_header_ar(ar_header);
break;
}
@@
-726,7
+729,9
@@
deb_extract(const char *package_filename, FILE *out_stream,
free_header_tar(tar_header);
fclose(uncompressed_stream);
free_header_tar(tar_header);
fclose(uncompressed_stream);
- gz_close(gunzip_pid);
+ gz_err = gz_close(gunzip_pid);
+ if (gz_err)
+ *err = -1;
free_header_tar(tar_header);
break;
}
free_header_tar(tar_header);
break;
}
@@
-734,7
+739,9
@@
deb_extract(const char *package_filename, FILE *out_stream,
free_header_tar(tar_header);
}
fclose(unzipped_opkg_stream);
free_header_tar(tar_header);
}
fclose(unzipped_opkg_stream);
- gz_close(unzipped_opkg_pid);
+ gz_err = gz_close(unzipped_opkg_pid);
+ if (gz_err)
+ *err = -1;
goto cleanup;
} else {
goto cleanup;
} else {