Browse code

add sanity check for %v (bb#463)

git-svn: trunk@3087

Tomasz Kojm authored on 2007/05/30 21:02:06
Showing 2 changed files
... ...
@@ -1,6 +1,10 @@
1
+Wed May 30 13:27:09 CEST 2007 (tk)
2
+----------------------------------
3
+  * fresclam/manager.c: add sanity check for %v (bb#463)
4
+
1 5
 Tue May 29 21:47:23 CEST 2007 (tk)
2 6
 ----------------------------------
3
-  * libclamav/unrar/unrar.c: improve handling of corrupted/handcrafed headers
7
+  * libclamav/unrar/unrar.c: improve handling of corrupted/handcrafted headers
4 8
 			     (bb#511, patch from Trog)
5 9
 
6 10
 Tue May 29 21:28:40 CEST 2007 (tk)
... ...
@@ -1268,7 +1268,19 @@ int downloadmanager(const struct cfgstruct *copt, const struct optstruct *opt, c
1268 1268
 	if(arg) {
1269 1269
 		char *cmd = strdup(arg);
1270 1270
 
1271
-	    if((pt = strstr(cmd, "%v")) && newver && isdigit(*newver)) {
1271
+	    if((pt = newver)) {
1272
+		while(*pt) {
1273
+		    if(!strchr("0123456789.", *pt)) {
1274
+			logg("!downloadmanager: OnOutdatedExecute: Incorrect version number string\n");
1275
+			free(newver);
1276
+			newver = NULL;
1277
+			break;
1278
+		    }
1279
+		    pt++;
1280
+		}
1281
+	    }
1282
+
1283
+	    if(newver && (pt = strstr(cmd, "%v"))) {
1272 1284
 		    char *buffer = (char *) malloc(strlen(cmd) + strlen(newver) + 10);
1273 1285
 
1274 1286
 		if(!buffer) {
... ...
@@ -1288,11 +1300,12 @@ int downloadmanager(const struct cfgstruct *copt, const struct optstruct *opt, c
1288 1288
 		free(buffer);
1289 1289
 	    }
1290 1290
 
1291
-	    if(opt_check(opt, "daemon"))
1292
-		execute("OnOutdatedExecute", cmd);
1293
-	    else
1294
-		system(cmd);
1295
-
1291
+	    if(newver) {
1292
+		if(opt_check(opt, "daemon"))
1293
+		    execute("OnOutdatedExecute", cmd);
1294
+		else
1295
+		    system(cmd);
1296
+	    }
1296 1297
 	    free(cmd);
1297 1298
 	}
1298 1299
     }