diff options
author | Dan McGee <dan@archlinux.org> | 2008-01-06 00:34:10 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-01-06 00:35:43 +0100 |
commit | 5aa873edb696bbf678cbb57df43d90e23d562179 (patch) | |
tree | f58346db23f2f08063a8a7ee50132b4e2612fb8b /lib/libalpm | |
parent | 85a8b150edb7d1fca67f7f0abee3400bd57e7d5a (diff) | |
download | pacman-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/libalpm')
-rw-r--r-- | lib/libalpm/sync.c | 14 |
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; } } |