Module: kamailio
Branch: 5.1
Commit: 5abf68b4d9afc8bf0cd71727b7e71d966a67b165
URL: 
https://github.com/kamailio/kamailio/commit/5abf68b4d9afc8bf0cd71727b7e71d966a67b165

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2018-06-21T08:30:50+02:00

db_perlvdb: unref in case of error

(cherry picked from commit 927ddcf084b637385df103fb489d843e0255f4f8)

---

Modified: src/modules/db_perlvdb/perlvdb_conv.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/5abf68b4d9afc8bf0cd71727b7e71d966a67b165.diff
Patch: 
https://github.com/kamailio/kamailio/commit/5abf68b4d9afc8bf0cd71727b7e71d966a67b165.patch

---

diff --git a/src/modules/db_perlvdb/perlvdb_conv.c 
b/src/modules/db_perlvdb/perlvdb_conv.c
index 677f09a850..f263774658 100644
--- a/src/modules/db_perlvdb/perlvdb_conv.c
+++ b/src/modules/db_perlvdb/perlvdb_conv.c
@@ -263,9 +263,9 @@ int perlresult2dbres(SV *perlres, db1_res_t **r) {
        /* Fetch column definitions */
        colarrayref = perlvdb_perlmethod(perlres, PERL_VDB_COLDEFSMETHOD,
                        NULL, NULL, NULL, NULL);
-       if (!(SvROK(colarrayref))) goto error;
+       if (colarrayref==NULL || !(SvROK(colarrayref))) goto error;
        colarray = (AV *)SvRV(colarrayref);
-       if (!(SvTYPE(colarray) == SVt_PVAV)) goto error;
+       if (colarray==NULL || !(SvTYPE(colarray) == SVt_PVAV)) goto error;
 
        colcount = av_len(colarray) + 1;
 
@@ -305,7 +305,7 @@ int perlresult2dbres(SV *perlres, db1_res_t **r) {
        }
 
        rowarray = (AV *)SvRV(rowarrayref);
-       if (!(SvTYPE(rowarray) == SVt_PVAV)) goto error;
+       if (rowarray == NULL || !(SvTYPE(rowarray) == SVt_PVAV)) goto error;
 
        rowcount = av_len(rowarray) + 1;
 
@@ -403,10 +403,12 @@ int perlresult2dbres(SV *perlres, db1_res_t **r) {
        }
 
 end:
-       if (colarray) av_undef(colarray);
+       if(colarray) av_undef(colarray);
        if (rowarray) av_undef(rowarray);
        return retval;
 error:
+       if(colarray) av_undef(colarray);
+       if (rowarray) av_undef(rowarray);
        LM_CRIT("broken result set. Exiting, leaving Kamailio in unknown 
state.\n");
        return -1;
 }


_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to