blob: 1ab1790d6a0e657b2e12ab065674835db8c77ea3 [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001From 3e562bed7dced25eb3e9174ca9395324b6c873c1 Mon Sep 17 00:00:00 2001
2From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
3Date: Wed, 9 Dec 2015 13:36:14 -0600
4Subject: [PATCH] libsolv_solver_set_arch_policy: use correct logic during
5 archs resizing
6
7If there are more than INITIAL_ARCH_LIST_SIZE archs defined in the
8configuration, libsolv_solver_set_arch_policy crashes due to flawed
9logic when resizing the archs array.
10
11Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
12---
13 libopkg/opkg_solver_libsolv.c | 6 ++++--
14 1 file changed, 4 insertions(+), 2 deletions(-)
15
16diff --git a/libopkg/opkg_solver_libsolv.c b/libopkg/opkg_solver_libsolv.c
17index 1cdcf1f..b5af0fa 100644
18--- a/libopkg/opkg_solver_libsolv.c
19+++ b/libopkg/opkg_solver_libsolv.c
20@@ -66,8 +66,10 @@ static void libsolv_solver_set_arch_policy(libsolv_solver_t *libsolv_solver)
21 nv_pair_list_elt_t *arch_info;
22
23 list_for_each_entry(arch_info, &opkg_config->arch_list.head, node) {
24- if (arch_count > arch_list_size)
25- archs = xrealloc(archs, arch_list_size *= 2);
26+ if (arch_count >= arch_list_size) {
27+ arch_list_size *= 2;
28+ archs = xrealloc(archs, arch_list_size * sizeof(arch_data_t));
29+ }
30
31 archs[arch_count].arch = ((nv_pair_t *)(arch_info->data))->name;
32 archs[arch_count].priority = atoi(((nv_pair_t *)
33--
341.9.1
35