summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2016-09-03 12:13:35 +0200
committerAndrew Gregory <andrew.gregory.8@gmail.com>2017-05-09 05:27:42 +0200
commit5a7204ee1874c2d826578089a9b4abecff0d9dc1 (patch)
tree9bd23d4dbb5be0eb4ac1a34b387827377abae76b
parentd6b6896a132c53c3b078707b70e25c30c6e6ce3f (diff)
downloadpacman-5a7204ee1874c2d826578089a9b4abecff0d9dc1.tar.gz
pacman-5a7204ee1874c2d826578089a9b4abecff0d9dc1.tar.xz
Fix memory leak in remove_notify_needed_optdepends
Also add pactest which captures this leak when run under valgrind. Reported-by: Sergey Petrenko Signed-off-by: Allan McRae <allan@archlinux.org> (cherry picked from commit fac4831a091eda447780d5d1e1e572b14ebb0338)
-rw-r--r--lib/libalpm/remove.c1
-rw-r--r--test/pacman/tests/TESTS1
-rw-r--r--test/pacman/tests/remove-optdepend-of-installed-package.py15
3 files changed, 17 insertions, 0 deletions
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index 45f7c2f4..173dbc69 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -189,6 +189,7 @@ static void remove_notify_needed_optdepends(alpm_handle_t *handle, alpm_list_t *
};
EVENT(handle, &event);
}
+ free(optstring);
}
}
}
diff --git a/test/pacman/tests/TESTS b/test/pacman/tests/TESTS
index 45ebabb2..81078a58 100644
--- a/test/pacman/tests/TESTS
+++ b/test/pacman/tests/TESTS
@@ -109,6 +109,7 @@ TESTS += test/pacman/tests/querycheck002.py
TESTS += test/pacman/tests/querycheck_fast_file_type.py
TESTS += test/pacman/tests/reason001.py
TESTS += test/pacman/tests/remove-assumeinstalled.py
+TESTS += test/pacman/tests/remove-optdepend-of-installed-package.py
TESTS += test/pacman/tests/remove-recursive-cycle.py
TESTS += test/pacman/tests/remove001.py
TESTS += test/pacman/tests/remove002.py
diff --git a/test/pacman/tests/remove-optdepend-of-installed-package.py b/test/pacman/tests/remove-optdepend-of-installed-package.py
new file mode 100644
index 00000000..4973df5f
--- /dev/null
+++ b/test/pacman/tests/remove-optdepend-of-installed-package.py
@@ -0,0 +1,15 @@
+self.description = "Remove packages which is an optdepend of another package"
+
+p1 = pmpkg("dep")
+self.addpkg2db("local", p1)
+
+p2 = pmpkg("pkg")
+p2.optdepends = ["dep: for foobar"]
+self.addpkg2db("local", p2)
+
+self.args = "-R %s" % p1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=%s" % p1.name)
+self.addrule("PKG_EXIST=%s" % p2.name)
+self.addrule("PACMAN_OUTPUT=%s optionally requires %s" % (p2.name, p1.name))