Found by Fedora's static analysis [1].

[1] 
https://openscanhub.fedoraproject.org/task/51915/log/device-mapper-multipath-0.11.1-1.fc43/scan-results.html

Signed-off-by: Martin Wilck <mwi...@suse.com>
---
 libmpathpersist/mpath_persist_int.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libmpathpersist/mpath_persist_int.c 
b/libmpathpersist/mpath_persist_int.c
index 0576429..0c5cd60 100644
--- a/libmpathpersist/mpath_persist_int.c
+++ b/libmpathpersist/mpath_persist_int.c
@@ -450,10 +450,10 @@ static int mpath_prout_rel(struct multipath *mpp,int 
rq_servact, int rq_scope,
        int count = 0;
        int status = MPATH_PR_SUCCESS;
        struct prin_resp resp;
-       struct prout_param_descriptor *pamp;
+       struct prout_param_descriptor *pamp = NULL;
        struct prin_resp *pr_buff;
        int length;
-       struct transportid *pptr;
+       struct transportid *pptr = NULL;
 
        if (!mpp)
                return MPATH_PR_DMMP_ERROR;
@@ -560,7 +560,7 @@ static int mpath_prout_rel(struct multipath *mpp,int 
rq_servact, int rq_scope,
        pamp = (struct prout_param_descriptor *)malloc (length);
        if (!pamp){
                condlog (0, "%s: failed to alloc pr out parameter.", mpp->wwid);
-               goto out1;
+               goto out;
        }
 
        memset(pamp, 0, length);
@@ -570,6 +570,7 @@ static int mpath_prout_rel(struct multipath *mpp,int 
rq_servact, int rq_scope,
                condlog (0, "%s: failed to alloc pr out transportid.", 
mpp->wwid);
                goto out1;
        }
+       pptr = pamp->trnptid_list[0];
 
        if (get_be64(mpp->reservation_key)){
                memcpy (pamp->key, &mpp->reservation_key, 8);
@@ -581,11 +582,10 @@ static int mpath_prout_rel(struct multipath *mpp,int 
rq_servact, int rq_scope,
 
        if (status) {
                condlog(0, "%s: failed to send CLEAR_SA", mpp->wwid);
-               goto out1;
+               goto out2;
        }
 
        pamp->num_transportid = 1;
-       pptr=pamp->trnptid_list[0];
 
        for (i = 0; i < num; i++){
                if (get_be64(mpp->reservation_key) &&
@@ -629,7 +629,7 @@ static int mpath_prout_rel(struct multipath *mpp,int 
rq_servact, int rq_scope,
                status = mpath_prout_reg(mpp, MPATH_PROUT_REG_SA, rq_scope, 
rq_type, pamp, noisy);
        }
 
-
+out2:
        free(pptr);
 out1:
        free (pamp);
-- 
2.49.0


Reply via email to