]> granicus.if.org Git - vnstat/commitdiff
fix resource leak in db_getdata_range
authorChristian Göttsche <cgzones@googlemail.com>
Fri, 6 Sep 2019 15:51:53 +0000 (17:51 +0200)
committerChristian Göttsche <cgzones@googlemail.com>
Fri, 6 Sep 2019 15:51:53 +0000 (17:51 +0200)
if an invalid 'table' is given the function returns without freeing 'ifaceidin'
postpone the initialization

found by Coverity

src/dbsql.c

index 9fb81355ad09600dc30ae73c78eb7bcef9a0fff7..12fd51b106c6f278c7327232b8469472f20f14a4 100644 (file)
@@ -1171,11 +1171,6 @@ int db_getdata_range(dbdatalist **dbdata, dbdatalistinfo *listinfo, const char *
 
        listinfo->count = 0;
 
-       ifaceidin = db_getinterfaceidin(iface);
-       if (ifaceidin == NULL) {
-               return 0;
-       }
-
        ret = 0;
        for (i = 0; i < 6; i++) {
                if (strcmp(table, datatables[i]) == 0) {
@@ -1187,6 +1182,11 @@ int db_getdata_range(dbdatalist **dbdata, dbdatalistinfo *listinfo, const char *
                return 0;
        }
 
+       ifaceidin = db_getinterfaceidin(iface);
+       if (ifaceidin == NULL) {
+               return 0;
+       }
+
        dbegin[0] = '\0';
        if (strlen(databegin)) {
                snprintf(dbegin, 32, "and date >= '%s'", databegin);