fru: swap free() calls for free_n()

Swap calls to free() with calls to free_n() to leverage helper method
and handle clearing pointers after freeing in one step.

Signed-off-by: Patrick Venture <venture@google.com>
This commit is contained in:
Patrick Venture 2018-12-25 06:12:01 -08:00 committed by Alexander Amelkin
parent eb5f26060a
commit a8b3b6282b

View File

@ -478,8 +478,7 @@ free_fru_bloc(t_ipmi_fru_bloc *bloc)
while (bloc) {
del = bloc;
bloc = bloc->next;
free(del);
del = NULL;
free_n(&del);
}
}
@ -934,8 +933,7 @@ fru_area_print_multirec_bloc(struct ipmi_intf * intf, struct fru_info * fru,
lprintf(LOG_DEBUG ,"Multi-Record area ends at: %i (%xh)",i,i);
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
}
@ -977,8 +975,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru,
/* read in the full fru */
if (read_fru_area(intf, fru, id, offset, fru_len, fru_data) < 0) {
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
return;
}
@ -1000,8 +997,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Chassis Part Number : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1009,8 +1005,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Chassis Serial : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
/* read any extra fields */
@ -1021,8 +1016,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Chassis Extra : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
if (i == j) {
@ -1030,10 +1024,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru,
}
}
if (fru_data) {
free(fru_data);
fru_data = NULL;
}
free_n(&fru_data);
}
/* fru_area_print_board - Print FRU Board Area
@ -1075,8 +1066,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
/* read in the full fru */
if (read_fru_area(intf, fru, id, offset, fru_len, fru_data) < 0) {
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
return;
}
@ -1096,8 +1086,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Board Mfg : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1105,8 +1094,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Board Product : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1114,8 +1102,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Board Serial : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1123,8 +1110,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Board Part Number : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1132,8 +1118,7 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0 && verbose > 0) {
printf(" Board FRU ID : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
/* read any extra fields */
@ -1144,17 +1129,13 @@ fru_area_print_board(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Board Extra : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
if (i == j)
break;
}
if (fru_data) {
free(fru_data);
fru_data = NULL;
}
free_n(&fru_data);
}
/* fru_area_print_product - Print FRU Product Area
@ -1195,8 +1176,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
/* read in the full fru */
if (read_fru_area(intf, fru, id, offset, fru_len, fru_data) < 0) {
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
return;
}
@ -1212,8 +1192,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Manufacturer : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1221,8 +1200,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Name : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1230,8 +1208,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Part Number : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1239,8 +1216,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Version : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1248,8 +1224,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Serial : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1257,8 +1232,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Asset Tag : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = get_fru_area_str(fru_data, &i);
@ -1266,8 +1240,7 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0 && verbose > 0) {
printf(" Product FRU ID : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
/* read any extra fields */
@ -1278,17 +1251,13 @@ fru_area_print_product(struct ipmi_intf * intf, struct fru_info * fru,
if (strlen(fru_area) > 0) {
printf(" Product Extra : %s\n", fru_area);
}
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
if (i == j)
break;
}
if (fru_data) {
free(fru_data);
fru_data = NULL;
}
free_n(&fru_data);
}
/* fru_area_print_multirec - Print FRU Multi Record Area
@ -1480,7 +1449,7 @@ fru_area_print_multirec(struct ipmi_intf * intf, struct fru_info * fru,
lprintf(LOG_DEBUG ,"Multi-Record area ends at: %i (%xh)", last_off, last_off);
free(fru_data);
free_n(&fru_data);
}
/* ipmi_fru_query_new_value - Query new values to replace original FRU content
@ -1519,7 +1488,7 @@ ipmi_fru_query_new_value(uint8_t *data,int offset, size_t len)
for( i=0;i<len;i++ ){
ret = scanf("%x", holder+i);
if (ret != 1) {
free(holder);
free_n(&holder);
return false;
}
}
@ -1527,8 +1496,7 @@ ipmi_fru_query_new_value(uint8_t *data,int offset, size_t len)
data[offset++] = (unsigned char) *(holder+i);
}
/* &data[offset++] */
free(holder);
holder = NULL;
free_n(&holder);
status = true;
}
else{
@ -3213,11 +3181,7 @@ ipmi_fru_print_all(struct ipmi_intf * intf)
intf->target_addr = save_addr;
}
if (mc) {
free(mc);
mc = NULL;
}
free_n(&mc);
continue;
}
@ -3228,15 +3192,11 @@ ipmi_fru_print_all(struct ipmi_intf * intf)
fru = (struct sdr_record_fru_locator *)
ipmi_sdr_get_record(intf, header, itr);
if (!fru || !fru->logical) {
if (fru) {
free(fru);
fru = NULL;
}
free_n(&fru);
continue;
}
rc = ipmi_fru_print(intf, fru);
free(fru);
fru = NULL;
free_n(&fru);
}
ipmi_sdr_end(itr);
@ -3312,14 +3272,12 @@ ipmi_fru_read_to_bin(struct ipmi_intf * intf,
printf("Done\n");
} else {
lprintf(LOG_ERR, "Error opening file %s\n", pFileName);
free(pFruBuf);
pFruBuf = NULL;
free_n(&pFruBuf);
return;
}
fclose(pFile);
}
free(pFruBuf);
pFruBuf = NULL;
free_n(&pFruBuf);
}
static void
@ -3383,8 +3341,7 @@ ipmi_fru_write_from_bin(struct ipmi_intf * intf,
lprintf(LOG_INFO,"Done");
}
free(pFruBuf);
pFruBuf = NULL;
free_n(&pFruBuf);
}
/* ipmi_fru_write_help() - print help text for 'write'
@ -3587,8 +3544,7 @@ ipmi_fru_edit_multirec(struct ipmi_intf * intf, uint8_t id ,
i += h->len + sizeof (struct fru_multirec_header);
} while (!(h->format & 0x80) && (error != 1));
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
}
return 0;
}
@ -3772,8 +3728,7 @@ ipmi_fru_get_multirec(struct ipmi_intf * intf, uint8_t id ,
i += h->len + sizeof (struct fru_multirec_header);
} while (!(h->format & 0x80) && (error != 1));
free(fru_data);
fru_data = NULL;
free_n(&fru_data);
}
return 0;
}
@ -3831,8 +3786,7 @@ ipmi_fru_upg_ekeying(struct ipmi_intf *intf, char *pFileName, uint8_t fruId)
lprintf(LOG_INFO, "Done upgrading Ekey.");
exit:
free(buf);
buf = NULL;
free_n(&buf);
return rc;
}
@ -4334,8 +4288,7 @@ ipmi_fru_read_internal_use(struct ipmi_intf * intf, uint8_t id, char * pFileName
else
{
lprintf(LOG_ERR, "Error opening file %s\n", pFileName);
free(frubuf);
frubuf = NULL;
free_n(&frubuf);
return -1;
}
fclose(pFile);
@ -4343,8 +4296,7 @@ ipmi_fru_read_internal_use(struct ipmi_intf * intf, uint8_t id, char * pFileName
}
printf("\n");
free(frubuf);
frubuf = NULL;
free_n(&frubuf);
}
}
@ -4427,8 +4379,7 @@ ipmi_fru_write_internal_use(struct ipmi_intf * intf, uint8_t id, char * pFileNam
lprintf(LOG_ERR, "Unable to read file: %i\n", fru_read_size);
}
free(frubuf);
frubuf = NULL;
free_n(&frubuf);
}
fclose(fp);
fp = NULL;
@ -4827,8 +4778,7 @@ f_type, uint8_t f_index, char *f_string)
for (i=0; i <= f_index; i++) {
fru_field_offset_tmp = fru_field_offset;
if (fru_area) {
free(fru_area);
fru_area = NULL;
free_n(&fru_area);
}
fru_area = (uint8_t *) get_fru_area_str(fru_data, &fru_field_offset);
}
@ -4874,15 +4824,9 @@ f_type, uint8_t f_index, char *f_string)
}
}
ipmi_fru_set_field_string_out:
if (fru_data) {
free(fru_data);
fru_data = NULL;
}
if (fru_area) {
free(fru_area);
fru_area = NULL;
}
ipmi_fru_set_field_string_out:
free_n(&fru_data);
free_n(&fru_area);
return rc;
}
@ -5003,10 +4947,7 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
3) Seek to field index */
for (i = 0;i <= f_index; i++) {
fru_field_offset_tmp = fru_field_offset;
if (fru_area) {
free(fru_area);
fru_area = NULL;
}
free_n(&fru_area);
fru_area = (uint8_t *) get_fru_area_str(fru_data_old, &fru_field_offset);
}
@ -5237,19 +5178,10 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
printf("Done.\n");
ipmi_fru_set_field_string_rebuild_out:
if (fru_area) {
free(fru_area);
fru_area = NULL;
}
if (fru_data_new) {
free(fru_data_new);
fru_data_new = NULL;
}
if (fru_data_old) {
free(fru_data_old);
fru_data_old = NULL;
}
ipmi_fru_set_field_string_rebuild_out:
free_n(&fru_area);
free_n(&fru_data_new);
free_n(&fru_data_old);
return rc;
}