From 0ecd4f310318d9bd91db48e5c9dc7e749fbed82a Mon Sep 17 00:00:00 2001 From: Thomas Lam <79589038+tl-hbk@users.noreply.github.com> Date: Tue, 30 Mar 2021 05:33:52 -0700 Subject: [PATCH] Fix segfault in resolve_jobrules In selectandinstall sometimes rules are added and a realloc is required if there's no more memory available in the allocated block. r-- would just decrement the old pointer but the realloc could return a completely different block of memory --- src/solver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/solver.c b/src/solver.c index 9c02cc76..89a2ed10 100644 --- a/src/solver.c +++ b/src/solver.c @@ -1629,6 +1629,7 @@ resolve_jobrules(Solver *solv, int level, int disablerules, Queue *dq) } olevel = level; level = selectandinstall(solv, level, dq, disablerules, i, SOLVER_REASON_RESOLVE_JOB); + r = solv->rules + i; /* selectandinstall may have added more rules */ if (level <= olevel) { if (level == olevel) -- 2.47.2