~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/scanners.c

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mfrom: (0.7.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070220103344-yrxzd2x7lhee3r02
Tags: 0.90-1ubuntu1
* Merge from debian unstable, remaining changes:
  - debian/clamav-base.init-stub, debian/clamav-daemon.init,
    debian/rules: init script stub for common setup functions.
  - debian/control: Maintainers updated for Ubuntu.

Show diffs side-by-side

added added

removed removed

Lines of Context:
267
267
            break;
268
268
        ret = cli_unrar_checklimits(ctx, rar_state.metadata_tail, rar_state.file_count);
269
269
        if(ret && ret != CL_VIRUS) {
 
270
            free(rar_state.file_header->filename);
 
271
            free(rar_state.file_header);
270
272
            ret = CL_CLEAN;
271
273
            continue;
272
274
        } else if(ret == CL_VIRUS) {
 
275
            /* needed since we didn't reach unrar_extract_next to clean this up*/
 
276
            free(rar_state.file_header->filename);
 
277
            free(rar_state.file_header);           
273
278
            break;
274
279
        }
275
280
        ret = cli_unrar_extract_next(&rar_state,dir);
287
292
        }
288
293
 
289
294
        if(ret == CL_SUCCESS)
290
 
            ret = cli_unrar_scanmetadata(desc,rar_state.metadata, ctx, rar_state.file_count, sfx_check);
 
295
            ret = cli_unrar_scanmetadata(desc,rar_state.metadata_tail, ctx, rar_state.file_count, sfx_check);
291
296
 
292
297
    } while(ret == CL_SUCCESS);
293
298
 
346
351
    fstat(desc, &source);
347
352
 
348
353
    if(!(buff = (char *) cli_malloc(FILEBUFF))) {
349
 
        cli_dbgmsg("Zip: unable to malloc(%d)\n", FILEBUFF);
 
354
        cli_dbgmsg("Zip: unable to malloc(%u)\n", FILEBUFF);
350
355
        zip_dir_close(zdir);
351
356
        return CL_EMEM;
352
357
    }
734
739
    }
735
740
    fd = fileno(tmp);
736
741
 
737
 
    if(!(buff = (char *) malloc(FILEBUFF))) {
738
 
        cli_dbgmsg("Bzip: Unable to malloc %d bytes.\n", FILEBUFF);
 
742
    if(!(buff = (char *) cli_malloc(FILEBUFF))) {
 
743
        cli_dbgmsg("Bzip: Unable to malloc %u bytes.\n", FILEBUFF);
739
744
        fclose(tmp);
740
745
        if(!cli_leavetemps_flag)
741
746
            unlink(tmpname);
955
960
                if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
956
961
                    /* build the full name */
957
962
                    fname = cli_calloc(strlen(dirname) + strlen(dent->d_name) + 2, sizeof(char));
 
963
                    if(!fname) {
 
964
                        closedir(dd);
 
965
                        return CL_EMEM;
 
966
                    }
 
967
 
958
968
                    sprintf(fname, "%s/%s", dirname, dent->d_name);
959
969
 
960
970
                    /* stat the file */
1009
1019
 
1010
1020
        for(i = 0; i < vba_project->count; i++) {
1011
1021
            fullname = (char *) cli_malloc(strlen(vba_project->dir) + strlen(vba_project->name[i]) + 2);
 
1022
            if(!fullname) {
 
1023
                ret = CL_EMEM;
 
1024
                break;
 
1025
            }
1012
1026
            sprintf(fullname, "%s/%s", vba_project->dir, vba_project->name[i]);
1013
1027
            fd = open(fullname, O_RDONLY|O_BINARY);
1014
1028
            if(fd == -1) {
1054
1068
    } else if ((vba_project = (vba_project_t *) wm_dir_read(dirname))) {
1055
1069
        for (i = 0; i < vba_project->count; i++) {
1056
1070
                fullname = (char *) cli_malloc(strlen(vba_project->dir) + strlen(vba_project->name[i]) + 2);
 
1071
                if(!fullname) {
 
1072
                    ret = CL_EMEM;
 
1073
                    break;
 
1074
                }
1057
1075
                sprintf(fullname, "%s/%s", vba_project->dir, vba_project->name[i]);
1058
1076
                fd = open(fullname, O_RDONLY|O_BINARY);
1059
1077
                if(fd == -1) {
1092
1110
        free(vba_project->dir);
1093
1111
        free(vba_project);
1094
1112
    }
1095
 
                        
 
1113
 
1096
1114
    if(ret != CL_CLEAN)
1097
1115
        return ret;
1098
1116
 
1099
1117
    /* Check directory for embedded OLE objects */
1100
1118
    fullname = (char *) cli_malloc(strlen(dirname) + 16);
 
1119
    if(!fullname)
 
1120
        return CL_EMEM;
 
1121
 
1101
1122
    sprintf(fullname, "%s/_1_Ole10Native", dirname);
1102
1123
    fd = open(fullname, O_RDONLY|O_BINARY);
1103
1124
    free(fullname);
1127
1148
                if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
1128
1149
                    /* build the full name */
1129
1150
                    fname = cli_calloc(strlen(dirname) + strlen(dent->d_name) + 2, sizeof(char));
 
1151
                    if(!fname) {
 
1152
                        ret = CL_EMEM;
 
1153
                        break;
 
1154
                    }
1130
1155
                    sprintf(fname, "%s/%s", dirname, dent->d_name);
1131
1156
 
1132
1157
                    /* stat the file */