MINOR: cfgparse: load_cfg_in_mem: fix null ptr dereference reported by coverity

This helps to optimize a bit load_cfg_in_mem() and fixes the potential null ptr
dereference in fread() call. If (read_bytes + bytes_to_read) equals to initial
chunk_size (zero), realloc is never called, *cfg_content keeps its NULL value.

So, let's assure that initial number of bytes to read
(read_bytes + bytes_to_read) is stricly positive, when we enter into loop at
the first time.
This commit is contained in:
Valentine Krasnobaeva 2024-08-08 16:34:54 +02:00 committed by Willy Tarreau
parent fe5ddcc490
commit da82f08055

View File

@ -1771,10 +1771,9 @@ ssize_t load_cfg_in_mem(char *filename, char **cfg_content)
return -1; return -1;
} }
if (file_stat.st_size) { if (file_stat.st_size > chunk_size)
/* as we need to read EOF to have feof(f)=1 */ bytes_to_read = file_stat.st_size;
bytes_to_read = file_stat.st_size + 1;
}
if ((f = fopen(filename,"r")) == NULL) { if ((f = fopen(filename,"r")) == NULL) {
ha_alert("Could not open configuration file %s : %s\n", ha_alert("Could not open configuration file %s : %s\n",