From ce424a356f73e99fe2247a0d18437399f0e8c5e9 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 16 Dec 2007 22:45:01 -0600 Subject: Check for errors on descfile extraction If /tmp was full during the early stages of package extraction, we were unable to extract the package description file with the call to archive_read_data_into_fd(archive, fd) becuase we never checked the return code. Add a check to ensure the extraction was successful and print and return an error if it was not instead of falling through to a possibly untrue error message. This should fix FS #8885. Signed-off-by: Dan McGee --- lib/libalpm/package.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 88e93de1..f061bf16 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -1032,7 +1032,11 @@ pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full) /* extract this file into /tmp. it has info for us */ descfile = strdup("/tmp/alpm_XXXXXX"); fd = mkstemp(descfile); - archive_read_data_into_fd(archive, fd); + if(archive_read_data_into_fd(archive, fd) != ARCHIVE_OK) { + _alpm_log(PM_LOG_ERROR, _("error extracting package description file to %s\n"), + descfile); + goto pkg_invalid; + } /* parse the info file */ if(parse_descfile(descfile, info) == -1) { _alpm_log(PM_LOG_ERROR, _("could not parse package description file in %s\n"), -- cgit v1.2.3-24-g4f1b