]> granicus.if.org Git - vnstat/commitdiff
improve database validation
authorTeemu Toivola <git@humdi.net>
Sat, 5 Dec 2015 19:09:46 +0000 (21:09 +0200)
committerTeemu Toivola <git@humdi.net>
Sat, 5 Dec 2015 19:09:46 +0000 (21:09 +0200)
src/dbaccess.c

index 831044fbea4c31ae4ce028c302f3f261343ff86d..4c653bf883f3719ede210a5049ffc6ba6d1141c5 100644 (file)
@@ -610,6 +610,16 @@ int validatedb(void)
                }
        }
 
+       for (i=1; i<30; i++) {
+               if (!data.day[i].used) {
+                       break;
+               }
+               if (data.day[i-1].date < data.day[i].date) {
+                       printf("Invalid database daily date order: %u (%d) < %u (%d)\n", (unsigned int)data.day[i-1].date, i-1, (unsigned int)data.day[i].date, i);
+                       return 0;
+               }
+       }
+
        if (data.totalrx < rxsum || data.totaltx < txsum) {
                printf("Invalid database total traffic compared to daily usage.\n");
                return 0;
@@ -638,6 +648,16 @@ int validatedb(void)
                }
        }
 
+       for (i=1; i<12; i++) {
+               if (!data.month[i].used) {
+                       break;
+               }
+               if (data.month[i-1].month < data.month[i].month) {
+                       printf("Invalid database monthly date order: %u (%d) < %u (%d)\n", (unsigned int)data.month[i-1].month, i-1, (unsigned int)data.month[i].month, i);
+                       return 0;
+               }
+       }
+
        if (data.totalrx < rxsum || data.totaltx < txsum) {
                printf("Invalid database total traffic compared to monthly usage.\n");
                return 0;