From 2bda849bf9b39b423175d1ee1d8796b856cc9988 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Sun, 7 Jan 2018 19:30:42 -0500 Subject: detect pkghash allocation failure If rehash ever failed with a full hash it would return the old hash that is already full. get_hash_position would then loop forever because it would never find an empty bucket. Signed-off-by: Andrew Gregory Signed-off-by: Allan McRae --- lib/libalpm/be_local.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/libalpm/be_local.c') diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 97a49688..1ec6a20f 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -601,7 +601,10 @@ static int local_db_populate(alpm_db_t *db) /* add to the collection */ _alpm_log(db->handle, ALPM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n", pkg->name, db->treename); - db->pkgcache = _alpm_pkghash_add(db->pkgcache, pkg); + if(_alpm_pkghash_add(&db->pkgcache, pkg) == NULL) { + _alpm_pkg_free(pkg); + RET_ERR(db->handle, ALPM_ERR_MEMORY, -1); + } count++; } -- cgit v1.2.3-54-g00ecf