Using the same variable for return value and input parameter
of realloc() may cause memory leak when realloc() fails
to allocate new memory.
Change-Id: If2ee2134b272e6fc158fc400dc352704d81b0e24
Signed-off-by: Semun Lee <semun.lee@samsung.com>
double value_dbl = 0;
char file_buf[BUF_LEN] = {0,};
char *value = NULL;
+ char *tmp_value;
int value_size = 0;
retry_open:
while (fgets(file_buf, sizeof(file_buf), fp)) {
if (value) {
value_size = value_size + strlen(file_buf);
- value = (char *) realloc(value, value_size);
- if (value == NULL) {
+ tmp_value = (char *) realloc(value, value_size);
+ if (tmp_value == NULL) {
func_ret = PREFERENCE_ERROR_OUT_OF_MEMORY;
+ free(value);
+ value = NULL;
break;
}
+ value = tmp_value;
strncat(value, file_buf, strlen(file_buf));
} else {
value_size = strlen(file_buf) + 1;