Skip to content

Commit

Permalink
1.12 Merge ASAN fixes (#1059)
Browse files Browse the repository at this point in the history
* Merge ASAN fixes

Fix ASAN issue in h5dump error path #1051
ASAN fix for test_ld - free sub-allocation of fields #1052

* Merge Rework error allocation free.
  • Loading branch information
byrnHDF authored Oct 6, 2021
1 parent 6b9ee19 commit e2d9c76
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 37 deletions.
70 changes: 36 additions & 34 deletions hl/src/H5LD.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ static herr_t H5LD_get_dset_elmts(hid_t did, const hsize_t *prev_dims, const hsi
* Function: H5LD_clean_vector
*
* Purpose: Process the vector of info:
* 1) free the array of pointers to member names in listv[n]
* 2) close the type id of the last member in listv[n]
* 3) free the H5LD_memb_t structure itself as pointed to by listv[n]
* 1) free the array of pointers to member names in listv[n]
* 2) close the type id of the last member in listv[n]
* 3) free the H5LD_memb_t structure itself as pointed to by listv[n]
*
* Return: void
*
Expand Down Expand Up @@ -69,12 +69,12 @@ H5LD_clean_vector(H5LD_memb_t *listv[])
* Function: H5LD_construct_info()
*
* Purpose: Get the remaining info for a field:
* 1) Get the type id of the last member in the field
* 2) Get the total offset of all the members in the field
* 3) Get the type size of the last member in the field
* 1) Get the type id of the last member in the field
* 2) Get the total offset of all the members in the field
* 3) Get the type size of the last member in the field
*
* Return: Success: 0
* Failure: negative
* Failure: negative
*
* Programmer: Vailin Choi; Aug 2010
*
Expand Down Expand Up @@ -129,24 +129,24 @@ H5LD_construct_info(H5LD_memb_t *memb, hid_t par_tid)
* Function: H5LD_construct_vector
*
* Purpose: Process the comma-separated list of fields in "fields" as follows:
* Example:
* "fields": "a.b.c,d"
* listv[0]->tot_offset = total offset of "a" & "b" & "c"
* listv[0]->last_tid = type id of "c"
* listv[0]->last_tsize = type size of "c"
* listv[0]->names[0] = "a"
* listv[0]->names[1] = "b"
* listv[0]->names[2] = "c"
* listv[0]->names[3] = NULL
*
* listv[1]->tot_offset = offset of "d"
* listv[1]->last_tid = type id of "d"
* listv[1]->last_tsize = type size of "d"
* listv[1]->names[0] = "d"
* listv[1]->names[1] = NULL
* Example:
* "fields": "a.b.c,d"
* listv[0]->tot_offset = total offset of "a" & "b" & "c"
* listv[0]->last_tid = type id of "c"
* listv[0]->last_tsize = type size of "c"
* listv[0]->names[0] = "a"
* listv[0]->names[1] = "b"
* listv[0]->names[2] = "c"
* listv[0]->names[3] = NULL
*
* listv[1]->tot_offset = offset of "d"
* listv[1]->last_tid = type id of "d"
* listv[1]->last_tsize = type size of "d"
* listv[1]->names[0] = "d"
* listv[1]->names[1] = NULL
*
* Return: Success: # of comma-separated fields in "fields"
* Failure: negative value
* Failure: negative value
*
* Programmer: Vailin Choi; Aug 2010
*
Expand Down Expand Up @@ -251,8 +251,10 @@ H5LD_construct_vector(char *fields, H5LD_memb_t *listv[] /*OUT*/, hid_t par_tid)
goto done;
} /* end if */
else {
if (memb)
if (memb) {
HDfree(memb->names);
HDfree(memb);
}
goto done;
} /* end else */
} /* while !end_of_fields */
Expand All @@ -272,10 +274,10 @@ H5LD_construct_vector(char *fields, H5LD_memb_t *listv[] /*OUT*/, hid_t par_tid)
* Function: H5LD_get_dset_dims
*
* Purpose: To return the current size for each dimension of the
* dataset's dataspace
* dataset's dataspace
*
* Return: Success: 0
* Failure: negative value
* Failure: negative value
*
* Programmer: Vailin Choi; March 2010
*
Expand Down Expand Up @@ -316,12 +318,12 @@ H5LD_get_dset_dims(hid_t did, hsize_t *cur_dims)
* Function: H5LD_get_dset_type_size
*
* Purpose: To return the size of the dataset's datatype in bytes
* null "fields": return the size of the dataset's datatype
* non-null "fields": return the size of the dataset's datatype
* with respect to the selection in "fields"
* null "fields": return the size of the dataset's datatype
* non-null "fields": return the size of the dataset's datatype
* with respect to the selection in "fields"
*
* Return: Success: size of the dataset's datatype
* Failure: 0 (valid datatypes are never zero size)
* Failure: 0 (valid datatypes are never zero size)
*
* Programmer: Vailin Choi; March 2010
*
Expand Down Expand Up @@ -402,7 +404,7 @@ H5LD_get_dset_type_size(hid_t did, const char *fields)
* Purpose: To retrieve selected data from the dataset
*
* Return: Success: 0
* Failure: negative
* Failure: negative
*
* Programmer: Vailin Choi; August 2010
*
Expand Down Expand Up @@ -578,7 +580,7 @@ H5LD_get_dset_elmts(hid_t did, const hsize_t *prev_dims, const hsize_t *cur_dims
* Purpose: To retrieve the current dimension sizes for a dataset
*
* Return: Success: 0
* Failure: negative value
* Failure: negative value
*
* Programmer: Vailin Choi; March 2010
*
Expand All @@ -596,7 +598,7 @@ H5LDget_dset_dims(hid_t did, hsize_t *cur_dims)
* Purpose: To return the size in bytes of the datatype for the dataset
*
* Return: Success: size in bytes of the dataset's datatype
* Failure: 0 (valid datatypes are never zero size)
* Failure: 0 (valid datatypes are never zero size)
*
* Programmer: Vailin Choi; March 2010
*
Expand All @@ -614,7 +616,7 @@ H5LDget_dset_type_size(hid_t did, const char *fields)
* Purpose: To retrieve selected data from the dataset
*
* Return: Success: 0
* Failure: negative value
* Failure: negative value
*
* Programmer: Vailin Choi; March 2010
*
Expand Down
1 change: 1 addition & 0 deletions tools/lib/h5tools_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,7 @@ free_table(table_t *table)
HDfree(table->objs[u].objname);

HDfree(table->objs);
HDfree(table);
}

#ifdef H5DUMP_DEBUG
Expand Down
3 changes: 0 additions & 3 deletions tools/src/h5dump/h5dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -453,11 +453,8 @@ table_list_free(void)

/* Free each table */
free_table(table_list.tables[u].group_table);
HDfree(table_list.tables[u].group_table);
free_table(table_list.tables[u].dset_table);
HDfree(table_list.tables[u].dset_table);
free_table(table_list.tables[u].type_table);
HDfree(table_list.tables[u].type_table);
}

/* Free the table list */
Expand Down

0 comments on commit e2d9c76

Please sign in to comment.