backend: fixup resource leak in sr_init() error code path

Early sr_init() steps can just 'return' fine. After allocation of the
'context' memory, make all error paths 'goto done' before returning,
to undo the memory allocation.
This commit is contained in:
Gerhard Sittig 2017-03-26 15:46:37 +02:00
parent 309bb27ee4
commit 928560e6f5
1 changed files with 4 additions and 6 deletions

View File

@ -540,22 +540,22 @@ SR_API int sr_init(struct sr_context **ctx)
if (sanity_check_all_drivers(context) < 0) {
sr_err("Internal driver error(s), aborting.");
return ret;
goto done;
}
if (sanity_check_all_input_modules() < 0) {
sr_err("Internal input module error(s), aborting.");
return ret;
goto done;
}
if (sanity_check_all_output_modules() < 0) {
sr_err("Internal output module error(s), aborting.");
return ret;
goto done;
}
if (sanity_check_all_transform_modules() < 0) {
sr_err("Internal transform module error(s), aborting.");
return ret;
goto done;
}
#ifdef _WIN32
@ -580,9 +580,7 @@ SR_API int sr_init(struct sr_context **ctx)
context = NULL;
ret = SR_OK;
#if defined(HAVE_LIBUSB_1_0) || defined(_WIN32)
done:
#endif
g_free(context);
return ret;
}