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
No related merge requests found
......@@ -895,6 +895,7 @@ static int require_priv(
const char *versionstr /* "-<version>" or "" (for old style only */
) {
int status;
int returnvalue = 0;
const char *loaded = NULL;
const char *found = NULL;
HMODULE libhandle;
......@@ -1138,6 +1139,7 @@ static int require_priv(
else
fprintf(stderr, "Module %s%s%s not available\n", module,
version ? " version " : "", version ? version : "");
if (founddir) free(founddir);
return ifexists ? 0 : -1;
}
......@@ -1207,7 +1209,8 @@ static int require_priv(
fprintf(stderr,
"Requested %s version %s not available, found only %s.\n",
module, version, found);
return -1;
returnvalue = -1;
goto require_priv_error;
}
/* load dbd file */
......@@ -1227,7 +1230,8 @@ static int require_priv(
printf("Loading dbd file %s\n", filename);
if (dbLoadDatabase(filename, NULL, NULL) != 0) {
fprintf(stderr, "Error loading %s\n", filename);
return -1;
returnvalue = -1;
goto require_priv_error;
}
/* when dbd is loaded call register function */
......@@ -1263,12 +1267,18 @@ static int require_priv(
putenvprintf("TEMPLATES=%s", globalTemplates);
}
if (founddir) free(founddir);
/* no need to execute startup script twice if not with new arguments */
if (loaded && args == NULL) {
return 0;
}
return status;
require_priv_error:
if (founddir) free(founddir);
return returnvalue;
}
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