Skip to content
Snippets Groups Projects
Commit fd05d245 authored by Lucas Magalhães's avatar Lucas Magalhães
Browse files

Fix memory leak in require_priv

parent b60a9122
No related branches found
No related tags found
1 merge request!131E3-1197: Fix possible memory issues
...@@ -895,6 +895,7 @@ static int require_priv( ...@@ -895,6 +895,7 @@ static int require_priv(
const char *versionstr /* "-<version>" or "" (for old style only */ const char *versionstr /* "-<version>" or "" (for old style only */
) { ) {
int status; int status;
int returnvalue = 0;
const char *loaded = NULL; const char *loaded = NULL;
const char *found = NULL; const char *found = NULL;
HMODULE libhandle; HMODULE libhandle;
...@@ -1138,6 +1139,7 @@ static int require_priv( ...@@ -1138,6 +1139,7 @@ static int require_priv(
else else
fprintf(stderr, "Module %s%s%s not available\n", module, fprintf(stderr, "Module %s%s%s not available\n", module,
version ? " version " : "", version ? version : ""); version ? " version " : "", version ? version : "");
if (founddir) free(founddir);
return ifexists ? 0 : -1; return ifexists ? 0 : -1;
} }
...@@ -1207,7 +1209,8 @@ static int require_priv( ...@@ -1207,7 +1209,8 @@ static int require_priv(
fprintf(stderr, fprintf(stderr,
"Requested %s version %s not available, found only %s.\n", "Requested %s version %s not available, found only %s.\n",
module, version, found); module, version, found);
return -1; returnvalue = -1;
goto require_priv_error;
} }
/* load dbd file */ /* load dbd file */
...@@ -1227,7 +1230,8 @@ static int require_priv( ...@@ -1227,7 +1230,8 @@ static int require_priv(
printf("Loading dbd file %s\n", filename); printf("Loading dbd file %s\n", filename);
if (dbLoadDatabase(filename, NULL, NULL) != 0) { if (dbLoadDatabase(filename, NULL, NULL) != 0) {
fprintf(stderr, "Error loading %s\n", filename); fprintf(stderr, "Error loading %s\n", filename);
return -1; returnvalue = -1;
goto require_priv_error;
} }
/* when dbd is loaded call register function */ /* when dbd is loaded call register function */
...@@ -1263,12 +1267,18 @@ static int require_priv( ...@@ -1263,12 +1267,18 @@ static int require_priv(
putenvprintf("TEMPLATES=%s", globalTemplates); putenvprintf("TEMPLATES=%s", globalTemplates);
} }
if (founddir) free(founddir);
/* no need to execute startup script twice if not with new arguments */ /* no need to execute startup script twice if not with new arguments */
if (loaded && args == NULL) { if (loaded && args == NULL) {
return 0; return 0;
} }
return status; return status;
require_priv_error:
if (founddir) free(founddir);
return returnvalue;
} }
static const iocshFuncDef requireDef = { static const iocshFuncDef requireDef = {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment