libsolv/Fix-segfault-in-resolve_jobrules.patch
2021-11-02 14:56:35 +08:00

29 lines
1.1 KiB
Diff

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
Conflict: NA
Reference: https://github.com/openSUSE/libsolv/commit/0ecd4f310318d9bd91db48e5c9dc7e749fbed82a
---
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)