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>
This commit is contained in:
parent
85a8b150ed
commit
5aa873edb6
2 changed files with 34 additions and 6 deletions
|
@ -570,12 +570,14 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
|
||||||
}
|
}
|
||||||
if(rmpkg) {
|
if(rmpkg) {
|
||||||
pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages, rmpkg);
|
pmsyncpkg_t *rsync = _alpm_sync_find(trans->packages, rmpkg);
|
||||||
|
if(rsync) {
|
||||||
void *vpkg;
|
void *vpkg;
|
||||||
_alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
|
_alpm_log(PM_LOG_DEBUG, "removing '%s' from target list\n",
|
||||||
rsync->pkg->name);
|
rsync->pkg->name);
|
||||||
trans->packages = alpm_list_remove(trans->packages, rsync,
|
trans->packages = alpm_list_remove(trans->packages, rsync,
|
||||||
syncpkg_cmp, &vpkg);
|
syncpkg_cmp, &vpkg);
|
||||||
_alpm_sync_free(vpkg);
|
_alpm_sync_free(vpkg);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
26
pactest/tests/sync404.py
Normal file
26
pactest/tests/sync404.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
self.description = "FS#9024"
|
||||||
|
|
||||||
|
sp = pmpkg("xorg-server")
|
||||||
|
sp.depends = [ "libgl" ]
|
||||||
|
self.addpkg2db("sync", sp)
|
||||||
|
|
||||||
|
sp1 = pmpkg("nvidia-utils")
|
||||||
|
sp1.provides = [ "libgl" ]
|
||||||
|
sp1.conflicts = [ "libgl", "libgl-dri" ]
|
||||||
|
self.addpkg2db("sync", sp1)
|
||||||
|
|
||||||
|
sp2 = pmpkg("libgl")
|
||||||
|
sp2.provides = [ "libgl-dri" ]
|
||||||
|
self.addpkg2db("sync", sp2)
|
||||||
|
|
||||||
|
sp3 = pmpkg("nvidia")
|
||||||
|
sp3.depends = [ "nvidia-utils" ]
|
||||||
|
self.addpkg2db("sync", sp3)
|
||||||
|
|
||||||
|
self.args = "-S xorg-server nvidia"
|
||||||
|
|
||||||
|
self.addrule("PACMAN_RETCODE=0")
|
||||||
|
self.addrule("PKG_EXIST=xorg-server")
|
||||||
|
self.addrule("PKG_EXIST=nvidia")
|
||||||
|
self.addrule("PKG_EXIST=nvidia-utils")
|
||||||
|
self.addrule("!PKG_EXIST=libgl")
|
Loading…
Add table
Reference in a new issue