0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

UI: Fix potential memory leak when parsing OBSThemeMeta

This commit is contained in:
Richard Stanway 2022-10-06 23:45:00 +02:00 committed by Jim
parent f021da2afa
commit cba81638b5

View File

@ -1113,16 +1113,20 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path)
if (cf_token_is(cfp, "OBSThemeMeta") || if (cf_token_is(cfp, "OBSThemeMeta") ||
cf_go_to_token(cfp, "OBSThemeMeta", nullptr)) { cf_go_to_token(cfp, "OBSThemeMeta", nullptr)) {
OBSThemeMeta *meta = new OBSThemeMeta();
if (!cf_next_token(cfp)) if (!cf_next_token(cfp))
return nullptr; return nullptr;
if (!cf_token_is(cfp, "{")) if (!cf_token_is(cfp, "{"))
return nullptr; return nullptr;
OBSThemeMeta *meta = new OBSThemeMeta();
for (;;) { for (;;) {
if (!cf_next_token(cfp)) if (!cf_next_token(cfp)) {
delete meta;
return nullptr; return nullptr;
}
ret = cf_token_is_type(cfp, CFTOKEN_NAME, "name", ret = cf_token_is_type(cfp, CFTOKEN_NAME, "name",
nullptr); nullptr);
@ -1136,8 +1140,10 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path)
if (ret != PARSE_SUCCESS) if (ret != PARSE_SUCCESS)
continue; continue;
if (!cf_next_token(cfp)) if (!cf_next_token(cfp)) {
delete meta;
return nullptr; return nullptr;
}
ret = cf_token_is_type(cfp, CFTOKEN_STRING, "value", ret = cf_token_is_type(cfp, CFTOKEN_STRING, "value",
";"); ";");
@ -1158,9 +1164,11 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path)
} }
bfree(str); bfree(str);
if (!cf_go_to_token(cfp, ";", nullptr)) if (!cf_go_to_token(cfp, ";", nullptr)) {
delete meta;
return nullptr; return nullptr;
} }
}
return meta; return meta;
} }
return nullptr; return nullptr;