commit: 6474196695f7092f7725af8565507fad9b7cf961
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 12 16:21:55 2022 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Feb 12 16:21:55 2022 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=64741966
qmerge: fix Coverity NULL_RETURNS (possibly passing NULL)
CID 248879
buf (EAPI) and phases can be NULL, substitute EAPI, don't run
phase-funcs when no phases are present.
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
qmerge.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/qmerge.c b/qmerge.c
index 7b738ee..501011a 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1518,6 +1518,8 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, depend_atom *rpkg, set
*keep,
* the replacement package */
if (!pretend && rpkg == NULL) {
buf = tree_pkg_meta_get(pkg_ctx, EAPI);
+ if (buf == NULL)
+ buf = "0"; /* default */
phases = tree_pkg_meta_get(pkg_ctx, DEFINED_PHASES);
if (phases != NULL) {
mkdirat(pkg_ctx->fd, "temp", 0755);
@@ -1657,9 +1659,13 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, depend_atom *rpkg,
set *keep,
if (!pretend) {
buf = tree_pkg_meta_get(pkg_ctx, EAPI);
phases = tree_pkg_meta_get(pkg_ctx, DEFINED_PHASES);
- /* execute the pkg_postrm step */
- pkg_run_func_at(pkg_ctx->fd, ".", phases, PKG_POSTRM,
- T, T, buf, rpkg == NULL ? "" : rpkg->PVR);
+ if (buf == NULL)
+ buf = "0"; /* default */
+ if (phases != NULL) {
+ /* execute the pkg_postrm step */
+ pkg_run_func_at(pkg_ctx->fd, ".", phases, PKG_POSTRM,
+ T, T, buf, rpkg == NULL ? "" :
rpkg->PVR);
+ }
/* finally delete the vdb entry */
rm_rf_at(pkg_ctx->fd, ".");