Browse code

libclamav/readdb.c: fix handling of Engine attrib (bb#2297)

Tomasz Kojm authored on 2010/10/08 21:24:10
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Fri Oct  8 14:23:24 CEST 2010 (tk)
2
+----------------------------------
3
+ * libclamav/readdb.c: fix handling of Engine attrib (bb#2297)
4
+
1 5
 Tue Oct  5 18:14:59 EEST 2010 (edwin)
2 6
 -------------------------------------
3 7
  * libclamav/pdf.c: Fix 'Unknown error code ERROR'(bb #2296).
... ...
@@ -1256,6 +1256,19 @@ static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *e
1256 1256
 	return CL_EMALFDB;
1257 1257
     }
1258 1258
 
1259
+    if(tdb.engine) {
1260
+	if(tdb.engine[0] > cl_retflevel()) {
1261
+	    cli_dbgmsg("cli_loadldb: Signature for %s not loaded (required f-level: %u)\n", virname, tdb.engine[0]);
1262
+	    FREE_TDB(tdb);
1263
+	    (*sigs)--;
1264
+	    return CL_SUCCESS;
1265
+	} else if(tdb.engine[1] < cl_retflevel()) {
1266
+	    FREE_TDB(tdb);
1267
+	    (*sigs)--;
1268
+	    return CL_SUCCESS;
1269
+	}
1270
+    }
1271
+
1259 1272
     if(!tdb.target) {
1260 1273
 	cli_errmsg("cli_loadldb: No target specified in TDB\n");
1261 1274
 	FREE_TDB(tdb);
... ...
@@ -1337,19 +1350,6 @@ static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *e
1337 1337
 		return CL_EMEM;
1338 1338
 	    tdb.macro_ptids[i-1] = root->ac_patterns-1;
1339 1339
 	}
1340
-
1341
-	if(tdb.engine) {
1342
-	    if(tdb.engine[0] > cl_retflevel()) {
1343
-		cli_dbgmsg("cli_loadldb: Signature for %s not loaded (required f-level: %u)\n", virname, tdb.engine[0]);
1344
-		FREE_TDB(tdb);
1345
-		(*sigs)--;
1346
-		return CL_SUCCESS;
1347
-	    } else if(tdb.engine[1] < cl_retflevel()) {
1348
-		FREE_TDB(tdb);
1349
-		(*sigs)--;
1350
-		return CL_SUCCESS;
1351
-	    }
1352
-	}
1353 1340
     }
1354 1341
     memcpy(&lsig->tdb, &tdb, sizeof(tdb));
1355 1342
     return CL_SUCCESS;