summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2010-12-11 02:43:59 +0100
committerDan McGee <dan@archlinux.org>2010-12-11 02:45:14 +0100
commiteedf4f4e630f98350090ef2824b0981ffb4b7a4a (patch)
tree1235b03ba7a1673097ef408c038a59f82112d6c9
parentbd08581d2e5c67cc084b7ccb8f67df456bbd9ada (diff)
downloadpacman-eedf4f4e630f98350090ef2824b0981ffb4b7a4a.tar.gz
pacman-eedf4f4e630f98350090ef2824b0981ffb4b7a4a.tar.xz
Fix possible null pointer deref in check_arch
If we have a corrupted database, a package can come through without an arch, causing the code to blow up when making strcmp() calls. It might even be possible with perfectly valid database entries lacking an 'arch =' line. This behavior was seen as at least one of the problems in FS#21668. Ensure pkgarch is not null before doing anything further. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/trans.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 49fc0f67..02612ec1 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -107,7 +107,7 @@ static alpm_list_t *check_arch(alpm_list_t *pkgs)
for(i = pkgs; i; i = i->next) {
pmpkg_t *pkg = i->data;
const char *pkgarch = alpm_pkg_get_arch(pkg);
- if(strcmp(pkgarch,arch) && strcmp(pkgarch,"any")) {
+ if(pkgarch && strcmp(pkgarch, arch) && strcmp(pkgarch, "any")) {
char *string;
const char *pkgname = alpm_pkg_get_name(pkg);
const char *pkgver = alpm_pkg_get_version(pkg);