Browse code

iso9660: remove unnecessaty parameter on iso_parse_dir() and reset return code when scanall is in effect.

Steven Morgan authored on 2015/04/09 04:51:04
Showing 1 changed files
... ...
@@ -115,7 +115,7 @@ static char *iso_string(iso9660_t *iso, const void *src, unsigned int len) {
115 115
 }
116 116
 
117 117
 
118
-static int iso_parse_dir(iso9660_t *iso, unsigned int block, unsigned int len, unsigned int scanall) {
118
+static int iso_parse_dir(iso9660_t *iso, unsigned int block, unsigned int len) {
119 119
     cli_ctx *ctx = iso->ctx;
120 120
     int ret = CL_CLEAN;
121 121
     int viruses_found = 0;
... ...
@@ -186,8 +186,9 @@ static int iso_parse_dir(iso9660_t *iso, unsigned int block, unsigned int len, u
186 186
             ret = cli_matchmeta(ctx, iso->buf, filesz, filesz, 0, 0, 0, NULL);
187 187
             if (ret == CL_VIRUS) {
188 188
                 viruses_found = 1;
189
-                if (!scanall)
189
+                if (!SCAN_ALL)
190 190
                     break;
191
+                ret = CL_CLEAN;
191 192
             }
192 193
 
193 194
 	    if(dir[26] || dir[27])
... ...
@@ -195,7 +196,7 @@ static int iso_parse_dir(iso9660_t *iso, unsigned int block, unsigned int len, u
195 195
 	    else  {
196 196
 		/* TODO Handle multi-extent ? */
197 197
 		if(dir[25] & 2) {
198
-		    ret = iso_parse_dir(iso, fileoff, filesz, scanall);
198
+		    ret = iso_parse_dir(iso, fileoff, filesz);
199 199
 		} else {
200 200
 		    if(cli_checklimits("ISO9660", ctx, filesz, 0, 0) != CL_SUCCESS)
201 201
 			cli_dbgmsg("iso_parse_dir: Skipping overlimit file\n");
... ...
@@ -204,8 +205,9 @@ static int iso_parse_dir(iso9660_t *iso, unsigned int block, unsigned int len, u
204 204
 		}
205 205
                 if (ret == CL_VIRUS) {
206 206
                     viruses_found = 1;
207
-                    if (!scanall)
207
+                    if (!SCAN_ALL)
208 208
                         break;
209
+                    ret = CL_CLEAN;
209 210
                 }
210 211
 	    }
211 212
 	    dirsz -= entrysz;
... ...
@@ -326,7 +328,7 @@ int cli_scaniso(cli_ctx *ctx, size_t offset) {
326 326
     i = cli_hashset_init(&iso.dir_blocks, 1024, 80);
327 327
     if(i != CL_SUCCESS)
328 328
 	return i;
329
-    i = iso_parse_dir(&iso, cli_readint32(privol+156+2) + privol[156+1], cli_readint32(privol+156+10), SCAN_ALL);
329
+    i = iso_parse_dir(&iso, cli_readint32(privol+156+2) + privol[156+1], cli_readint32(privol+156+10));
330 330
     cli_hashset_destroy(&iso.dir_blocks);
331 331
     if(i == CL_BREAK)
332 332
 	return CL_CLEAN;