Browse code

cl_stat() functions now check .info files

git-svn: trunk@2464

Tomasz Kojm authored on 2006/10/30 20:26:49
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Mon Oct 30 12:24:09 CET 2006 (tk)
2
+---------------------------------
3
+  * libclamav/readdb.c: cl_stat() functions now check .info files
4
+
1 5
 Sun Oct 29 20:12:26 CET 2006 (tk)
2 6
 ---------------------------------
3 7
   * shared/misc.c: freshdbdir now supports daily.inc
... ...
@@ -1405,8 +1405,15 @@ int cl_statinidir(const char *dirname, struct cl_stat *dbstat)
1405 1405
 		dbstat->statdname = (char **) realloc(dbstat->statdname, dbstat->no * sizeof(char *));
1406 1406
 #endif
1407 1407
 
1408
-                fname = cli_calloc(strlen(dirname) + strlen(dent->d_name) + 2, sizeof(char));
1409
-		sprintf(fname, "%s/%s", dirname, dent->d_name);
1408
+                fname = cli_calloc(strlen(dirname) + strlen(dent->d_name) + 32, sizeof(char));
1409
+		if(cli_strbcasestr(dent->d_name, ".inc")) {
1410
+		    if(strstr(dent->d_name, "main"))
1411
+			sprintf(fname, "%s/main.inc/main.info", dirname);
1412
+		    else
1413
+			sprintf(fname, "%s/daily.inc/daily.info", dirname);
1414
+		} else {
1415
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
1416
+		}
1410 1417
 #if defined(C_INTERIX) || defined(C_OS2)
1411 1418
 		dbstat->statdname[dbstat->no - 1] = (char *) cli_calloc(strlen(dent->d_name) + 1, sizeof(char));
1412 1419
 		strcpy(dbstat->statdname[dbstat->no - 1], dent->d_name);
... ...
@@ -1478,8 +1485,15 @@ int cl_statchkdir(const struct cl_stat *dbstat)
1478 1478
 	    cli_strbcasestr(dent->d_name, ".inc")   ||
1479 1479
 	    cli_strbcasestr(dent->d_name, ".cvd"))) {
1480 1480
 
1481
-                fname = cli_calloc(strlen(dbstat->dir) + strlen(dent->d_name) + 2, sizeof(char));
1482
-		sprintf(fname, "%s/%s", dbstat->dir, dent->d_name);
1481
+                fname = cli_calloc(strlen(dbstat->dir) + strlen(dent->d_name) + 32, sizeof(char));
1482
+		if(cli_strbcasestr(dent->d_name, ".inc")) {
1483
+		    if(strstr(dent->d_name, "main"))
1484
+			sprintf(fname, "%s/main.inc/main.info", dbstat->dir);
1485
+		    else
1486
+			sprintf(fname, "%s/daily.inc/daily.info", dbstat->dir);
1487
+		} else {
1488
+		    sprintf(fname, "%s/%s", dbstat->dir, dent->d_name);
1489
+		}
1483 1490
 		stat(fname, &sb);
1484 1491
 		free(fname);
1485 1492