summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/package.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index d741562d..1f572594 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -271,27 +271,15 @@ pmpkg_t *_alpm_pkg_load(char *pkgfile)
/* parse the info file */
if(parse_descfile(descfile, info, 0) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not parse the package description file"));
- pm_errno = PM_ERR_PKG_INVALID;
- unlink(descfile);
- FREE(descfile);
- close(fd);
- goto error;
+ goto pkg_invalid;
}
if(!strlen(info->name)) {
_alpm_log(PM_LOG_ERROR, _("missing package name in %s"), pkgfile);
- pm_errno = PM_ERR_PKG_INVALID;
- unlink(descfile);
- FREE(descfile);
- close(fd);
- goto error;
+ goto pkg_invalid;
}
if(!strlen(info->version)) {
_alpm_log(PM_LOG_ERROR, _("missing package version in %s"), pkgfile);
- pm_errno = PM_ERR_PKG_INVALID;
- unlink(descfile);
- FREE(descfile);
- close(fd);
- goto error;
+ goto pkg_invalid;
}
config = 1;
unlink(descfile);
@@ -361,6 +349,11 @@ pmpkg_t *_alpm_pkg_load(char *pkgfile)
return(info);
+pkg_invalid:
+ pm_errno = PM_ERR_PKG_INVALID;
+ unlink(descfile);
+ FREE(descfile);
+ close(fd);
error:
FREEPKG(info);
archive_read_finish (archive);