cfgfile: fix leak on creation error
Unsuccesfull memory allocation for elements inside cfgfile
structure could result in resource leak.
Fixed by pointer verification after each malloc,
if malloc fail - error branch is proceeded with freeing memory.
Coverity issue: 195032
Fixes: d4cb819758
("cfgfile: support runtime modification")
Signed-off-by: Jacek Piasecki <jacekx.piasecki@intel.com>
Acked-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com>
This commit is contained in:
parent
74e0d3a174
commit
d04fc01de2
@ -303,7 +303,7 @@ rte_cfgfile_create(int flags)
|
||||
CFG_ALLOC_SECTION_BATCH);
|
||||
|
||||
if (cfg->sections == NULL)
|
||||
return NULL;
|
||||
goto error1;
|
||||
|
||||
cfg->allocated_sections = CFG_ALLOC_SECTION_BATCH;
|
||||
|
||||
@ -312,7 +312,7 @@ rte_cfgfile_create(int flags)
|
||||
struct rte_cfgfile_entry) * CFG_ALLOC_ENTRY_BATCH);
|
||||
|
||||
if (cfg->sections[i].entries == NULL)
|
||||
return NULL;
|
||||
goto error1;
|
||||
|
||||
cfg->sections[i].num_entries = 0;
|
||||
cfg->sections[i].allocated_entries = CFG_ALLOC_ENTRY_BATCH;
|
||||
@ -320,7 +320,21 @@ rte_cfgfile_create(int flags)
|
||||
|
||||
if (flags & CFG_FLAG_GLOBAL_SECTION)
|
||||
rte_cfgfile_add_section(cfg, "GLOBAL");
|
||||
|
||||
return cfg;
|
||||
error1:
|
||||
if (cfg->sections != NULL) {
|
||||
for (i = 0; i < cfg->allocated_sections; i++) {
|
||||
if (cfg->sections[i].entries != NULL) {
|
||||
free(cfg->sections[i].entries);
|
||||
cfg->sections[i].entries = NULL;
|
||||
}
|
||||
}
|
||||
free(cfg->sections);
|
||||
cfg->sections = NULL;
|
||||
}
|
||||
free(cfg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user