summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Venture <venture@google.com>2018-12-25 06:12:01 -0800
committerAlexander Amelkin <mocbuhtig@amelkin.msk.ru>2019-02-13 21:28:14 +0300
commita8b3b6282b3d2bb7fa0e54ce47b06302a96439d7 (patch)
tree17644727d231a971ea5b39780e0627731c23a2f0
parenteb5f26060a306d4efc44dd6e603f2ccb88c78f91 (diff)
downloadipmitool-a8b3b6282b3d2bb7fa0e54ce47b06302a96439d7.tar.gz
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>
-rw-r--r--lib/ipmi_fru.c166
1 files changed, 49 insertions, 117 deletions
diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
index 89e674c..c9e64fc 100644
--- a/lib/ipmi_fru.c
+++ b/lib/ipmi_fru.c
@@ -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;
}