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)
tsk_error_set_errstr
("%s: Invalid sector address in FAT (too large): %"
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;
}
......@@ -770,6 +775,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
if (data_run_tmp == NULL) {
tsk_fs_attr_run_free(data_run_head);
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1;
}
......@@ -798,8 +807,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
" cluster: %" PRIuDADDR, func_name, fs_meta->addr, clust);
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
tsk_fs_attr_run_free(data_run_head);
tsk_list_free(list_seen);
list_seen = NULL;
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1;
}
clust = nxt;
......@@ -809,13 +820,21 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
if (tsk_verbose)
tsk_fprintf(stderr,
"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;
}
if (tsk_list_add(&list_seen, clust)) {
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
tsk_list_free(list_seen);
list_seen = NULL;
tsk_fs_attr_run_free(data_run_head);
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1;
}
}
......@@ -826,6 +845,10 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
tsk_fs_attrlist_getnew(fs_meta->attr,
TSK_FS_ATTR_NONRES)) == NULL) {
fs_meta->attr_state = TSK_FS_META_ATTR_ERROR;
if (list_seen != NULL) {
tsk_list_free(list_seen);
list_seen = NULL;
}
return 1;
}
......@@ -835,6 +858,11 @@ fatfs_make_data_runs(TSK_FS_FILE * a_fs_file)
fs_meta->size, fs_meta->size, roundup(fs_meta->size,
fatfs->csize * fs->block_size), 0, 0)) {
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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment