[pacman-dev] libalpm: fix alpm_option_set_assumeinstalled

Message ID 20200123063834.92700-1-morganamilo@archlinux.org
State Accepted, archived
Headers show
Series [pacman-dev] libalpm: fix alpm_option_set_assumeinstalled | expand

Commit Message

morganamilo Jan. 23, 2020, 6:38 a.m. UTC
It looks like this function has never actually worked. The current list
is never set to NULL after being freed. So the new deps were just
appended to the already freed list, leading to a segfault.

Comments

Allan McRae Jan. 24, 2020, 1:37 a.m. UTC | #1
On 23/1/20 4:38 pm, morganamilo wrote:
> It looks like this function has never actually worked. The current list
> is never set to NULL after being freed. So the new deps were just
> appended to the already freed list, leading to a segfault.

Good spotting.  Patch is good.

A

Patch

diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index e3193f40..23464045 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -690,6 +690,7 @@  int SYMEXPORT alpm_option_set_assumeinstalled(alpm_handle_t *handle, alpm_list_t
 	if(handle->assumeinstalled) {
 		alpm_list_free_inner(handle->assumeinstalled, (alpm_list_fn_free)alpm_dep_free);
 		alpm_list_free(handle->assumeinstalled);
+		handle->assumeinstalled = NULL;
 	}
 	while(deps) {
 		if(alpm_option_add_assumeinstalled(handle, deps->data) != 0) {