[pacman-dev] Memleak

Allan McRae allan at archlinux.org
Sat Sep 3 10:14:17 UTC 2016


On 03/09/16 19:26, Sergey Petrenko via pacman-dev wrote:
> libalpm/remove.c:
>  
> in remove_notify_needed_optdepends():
>  
>         char *optstring = alpm_dep_compute_string(optdep);
> 
> isn't freed after being used.
> 
> Ought to thank Valgrind for this one.
> 

Thanks.  We did not cover this path in our pactest suite.  Adding this test:

diff --git a/test/pacman/tests/TESTS b/test/pacman/tests/TESTS
index bd5a0b6..2d87796 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 0000000..4973df5
--- /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))
-- 
2.9.3


More information about the pacman-dev mailing list