Skip to content
Snippets Groups Projects
Unverified Commit 9e64f9a4 authored by Ann Priestman's avatar Ann Priestman Committed by GitHub
Browse files

Merge pull request #2379 from joachimmetz/fix_leaks8

Fixed leaks in fatfs_make_data_runs
parents 37f9f8fc e4c6a84c
No related branches found
No related tags found
No related merge requests found
...@@ -759,6 +759,11 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -759,6 +759,11 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
tsk_error_set_errstr tsk_error_set_errstr
("%s: Invalid sector address in FAT (too large): %" ("%s: Invalid sector address in FAT (too large): %"
PRIuDADDR " (plus %d sectors)", func_name, sbase, fatfs->csize); PRIuDADDR " (plus %d sectors)", func_name, sbase, fatfs->csize);
tsk_fs_attr_run_free(data_run_head);
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
...@@ -770,6 +775,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -770,6 +775,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
if (data_run_tmp == NULL) { if (data_run_tmp == NULL) {
tsk_fs_attr_run_free(data_run_head); tsk_fs_attr_run_free(data_run_head);
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR; fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
...@@ -798,8 +807,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -798,8 +807,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
" cluster: %" PRIuDADDR, func_name, fs_meta->addr, clust); " cluster: %" PRIuDADDR, func_name, fs_meta->addr, clust);
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR; fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
tsk_fs_attr_run_free(data_run_head); tsk_fs_attr_run_free(data_run_head);
tsk_list_free(list_seen); if (list_seen != NULL) {
list_seen = NULL; tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
clust = nxt; clust = nxt;
...@@ -809,13 +820,21 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -809,13 +820,21 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
if (tsk_verbose) if (tsk_verbose)
tsk_fprintf(stderr, tsk_fprintf(stderr,
"Loop found while processing file\n"); "Loop found while processing file\n");
tsk_fs_attr_run_free(data_run_head);
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
break; break;
} }
if (tsk_list_add(&list_seen, clust)) { if (tsk_list_add(&list_seen, clust)) {
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR; fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
tsk_list_free(list_seen); tsk_fs_attr_run_free(data_run_head);
list_seen = NULL; if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
} }
...@@ -826,6 +845,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -826,6 +845,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
tsk_fs_attrlist_getnew(fs_meta->attr, tsk_fs_attrlist_getnew(fs_meta->attr,
TSK_FS_ATTR_NONRES)) == NULL) { TSK_FS_ATTR_NONRES)) == NULL) {
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR; fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
...@@ -835,6 +858,11 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file) ...@@ -835,6 +858,11 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
fs_meta->size, fs_meta->size, roundup(fs_meta->size, fs_meta->size, fs_meta->size, roundup(fs_meta->size,
fatfs->csize * fs->block_size), 0, 0)) { fatfs->csize * fs->block_size), 0, 0)) {
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR; fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
tsk_fs_attr_run_free(data_run_head);
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1; return 1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment