From a8b3b6282b3d2bb7fa0e54ce47b06302a96439d7 Mon Sep 17 00:00:00 2001 From: Patrick Venture Date: Tue, 25 Dec 2018 06:12:01 -0800 Subject: [PATCH 113/119] 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 --- lib/ipmi_fru.c | 182 ++++++++++++++----------------------------------- 1 file changed, 50 insertions(+), 132 deletions(-) diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c index 5057dc3..ad99ebe 100644 --- a/lib/ipmi_fru.c +++ b/lib/ipmi_fru.c @@ -428,8 +428,7 @@ free_fru_bloc(t_ipmi_fru_bloc *bloc) while (bloc) { del = bloc; bloc = bloc->next; - free(del); - del = NULL; + free_n(&del); } } @@ -878,8 +877,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); } @@ -920,8 +918,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; } @@ -943,8 +940,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); @@ -952,8 +948,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 */ @@ -964,8 +959,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) { @@ -973,10 +967,7 @@ fru_area_print_chassis(struct ipmi_intf * intf, struct fru_info * fru, } } - if (fru_data != NULL) { - free(fru_data); - fru_data = NULL; - } + free_n(&fru_data); } /* fru_area_print_board - Print FRU Board Area @@ -1018,8 +1009,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; } @@ -1041,8 +1031,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); @@ -1050,8 +1039,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); @@ -1059,8 +1047,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); @@ -1068,8 +1055,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); @@ -1077,8 +1063,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 */ @@ -1089,17 +1074,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 != NULL) { - free(fru_data); - fru_data = NULL; - } + free_n(&fru_data); } /* fru_area_print_product - Print FRU Product Area @@ -1140,8 +1121,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; } @@ -1157,8 +1137,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); @@ -1166,8 +1145,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); @@ -1175,8 +1153,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); @@ -1184,8 +1161,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); @@ -1193,8 +1169,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); @@ -1202,8 +1177,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); @@ -1211,8 +1185,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 */ @@ -1223,17 +1196,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 != NULL) { - free(fru_data); - fru_data = NULL; - } + free_n(&fru_data); } /* fru_area_print_multirec - Print FRU Multi Record Area @@ -1425,7 +1394,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 @@ -1462,7 +1431,7 @@ int ipmi_fru_query_new_value(uint8_t *data,int offset, size_t len) for( i=0;itarget_addr = save_addr; } - - if (mc) { - free(mc); - mc = NULL; - } - + free_n(&mc); continue; } @@ -3170,15 +3133,11 @@ ipmi_fru_print_all(struct ipmi_intf * intf) fru = (struct sdr_record_fru_locator *) ipmi_sdr_get_record(intf, header, itr); if (fru == NULL || !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(intf, itr); @@ -3254,14 +3213,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 @@ -3325,8 +3282,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' @@ -3529,8 +3485,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; } @@ -3714,8 +3669,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; } @@ -3755,33 +3709,21 @@ ipmi_fru_upg_ekeying(struct ipmi_intf * intf, if (ipmi_fru_get_multirec_from_file(pFileName, buf, fileMultiRecSize, offFileMultiRec) != 0) { lprintf(LOG_ERR, "Failed to get multirec from file '%s'.", pFileName); - if (buf != NULL) { - free(buf); - buf = NULL; - } + free_n(&buf); return (-1); } if (ipmi_fru_get_adjust_size_from_buffer(buf, &fileMultiRecSize) != 0) { lprintf(LOG_ERR, "Failed to adjust size from buffer."); - if (buf != NULL) { - free(buf); - buf = NULL; - } + free_n(&buf); return (-1); } if (write_fru_area(intf, &fruInfo, fruId, 0, offFruMultiRec, fileMultiRecSize, buf) != 0) { lprintf(LOG_ERR, "Failed to write FRU area."); - if (buf != NULL) { - free(buf); - buf = NULL; - } + free_n(&buf); return (-1); } - if (buf != NULL) { - free(buf); - buf = NULL; - } + free_n(&buf); lprintf(LOG_INFO, "Done upgrading Ekey."); return 0; } @@ -4283,8 +4225,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); @@ -4292,8 +4233,7 @@ ipmi_fru_read_internal_use(struct ipmi_intf * intf, uint8_t id, char * pFileName } printf("\n"); - free(frubuf); - frubuf = NULL; + free_n(&frubuf); } } @@ -4376,8 +4316,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; @@ -4778,10 +4717,7 @@ f_type, uint8_t f_index, char *f_string) /*Seek to field index */ for (i=0; i <= f_index; i++) { fru_field_offset_tmp = fru_field_offset; - if (fru_area != NULL) { - free(fru_area); - fru_area = NULL; - } + free_n(&fru_area); fru_area = (uint8_t *) get_fru_area_str(fru_data, &fru_field_offset); } @@ -4827,14 +4763,8 @@ f_type, uint8_t f_index, char *f_string) } ipmi_fru_set_field_string_out: - if (fru_data != NULL) { - free(fru_data); - fru_data = NULL; - } - if (fru_area != NULL) { - free(fru_area); - fru_area = NULL; - } + free_n(&fru_data); + free_n(&fru_area); return rc; } @@ -4956,10 +4886,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 != NULL) { - free(fru_area); - fru_area = NULL; - } + free_n(&fru_area); fru_area = (uint8_t *) get_fru_area_str(fru_data_old, &fru_field_offset); } @@ -5191,18 +5118,9 @@ 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 != NULL) { - free(fru_area); - fru_area = NULL; - } - if (fru_data_new != NULL) { - free(fru_data_new); - fru_data_new = NULL; - } - if (fru_data_old != NULL) { - free(fru_data_old); - fru_data_old = NULL; - } + free_n(&fru_area); + free_n(&fru_data_new); + free_n(&fru_data_old); return rc; } -- 2.19.1