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:
parent
309bb27ee4
commit
928560e6f5
|
@ -540,22 +540,22 @@ SR_API int sr_init(struct sr_context **ctx)
|
||||||
|
|
||||||
if (sanity_check_all_drivers(context) < 0) {
|
if (sanity_check_all_drivers(context) < 0) {
|
||||||
sr_err("Internal driver error(s), aborting.");
|
sr_err("Internal driver error(s), aborting.");
|
||||||
return ret;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sanity_check_all_input_modules() < 0) {
|
if (sanity_check_all_input_modules() < 0) {
|
||||||
sr_err("Internal input module error(s), aborting.");
|
sr_err("Internal input module error(s), aborting.");
|
||||||
return ret;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sanity_check_all_output_modules() < 0) {
|
if (sanity_check_all_output_modules() < 0) {
|
||||||
sr_err("Internal output module error(s), aborting.");
|
sr_err("Internal output module error(s), aborting.");
|
||||||
return ret;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sanity_check_all_transform_modules() < 0) {
|
if (sanity_check_all_transform_modules() < 0) {
|
||||||
sr_err("Internal transform module error(s), aborting.");
|
sr_err("Internal transform module error(s), aborting.");
|
||||||
return ret;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -580,9 +580,7 @@ SR_API int sr_init(struct sr_context **ctx)
|
||||||
context = NULL;
|
context = NULL;
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
|
|
||||||
#if defined(HAVE_LIBUSB_1_0) || defined(_WIN32)
|
|
||||||
done:
|
done:
|
||||||
#endif
|
|
||||||
g_free(context);
|
g_free(context);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue