summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2008-01-06 00:34:10 +0100
committerDan McGee <dan@archlinux.org>2008-01-06 00:35:43 +0100
commit5aa873edb696bbf678cbb57df43d90e23d562179 (patch)
treef58346db23f2f08063a8a7ee50132b4e2612fb8b /lib
parent85a8b150edb7d1fca67f7f0abee3400bd57e7d5a (diff)
downloadpacman-5aa873edb696bbf678cbb57df43d90e23d562179.tar.gz
pacman-5aa873edb696bbf678cbb57df43d90e23d562179.tar.xz
sync.c: add sanity check so we don't dereference a null pointer
Originally noticed in FS#9024, but was fixed in previous changes anyway. However, it doesn't hurt to still check it. Also add a pactest from Chantry Xavier for the original problem to ensure we can't reproduce it. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/sync.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index dd54ce6c..ec4af9f4 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -570,12 +570,14 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
}
if(rmpkg) {
pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages, rmpkg);
- void *vpkg;
- _alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
- rsync->pkg->name);
- trans->packages = alpm_list_remove(trans->packages, rsync,
- syncpkg_cmp, &vpkg);
- _alpm_sync_free(vpkg);
+ if(rsync) {
+ void *vpkg;
+ _alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
+ rsync->pkg->name);
+ trans->packages = alpm_list_remove(trans->packages, rsync,
+ syncpkg_cmp, &vpkg);
+ _alpm_sync_free(vpkg);
+ }
continue;
}
}