From cba81638b518ea85c77456dd5306b07bdb0779ec Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Thu, 6 Oct 2022 23:45:00 +0200 Subject: [PATCH] UI: Fix potential memory leak when parsing OBSThemeMeta --- UI/obs-app.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 6a439c35d..095d03b89 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -1113,16 +1113,20 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path) if (cf_token_is(cfp, "OBSThemeMeta") || cf_go_to_token(cfp, "OBSThemeMeta", nullptr)) { - OBSThemeMeta *meta = new OBSThemeMeta(); + if (!cf_next_token(cfp)) return nullptr; if (!cf_token_is(cfp, "{")) return nullptr; + OBSThemeMeta *meta = new OBSThemeMeta(); + for (;;) { - if (!cf_next_token(cfp)) + if (!cf_next_token(cfp)) { + delete meta; return nullptr; + } ret = cf_token_is_type(cfp, CFTOKEN_NAME, "name", nullptr); @@ -1136,8 +1140,10 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path) if (ret != PARSE_SUCCESS) continue; - if (!cf_next_token(cfp)) + if (!cf_next_token(cfp)) { + delete meta; return nullptr; + } ret = cf_token_is_type(cfp, CFTOKEN_STRING, "value", ";"); @@ -1158,8 +1164,10 @@ OBSThemeMeta *OBSApp::ParseThemeMeta(const char *path) } bfree(str); - if (!cf_go_to_token(cfp, ";", nullptr)) + if (!cf_go_to_token(cfp, ";", nullptr)) { + delete meta; return nullptr; + } } return meta; }