Fix memory leaks and prevent dangling pointer in engine init 34/321434/2
authordyamy-lee <dyamy.lee@samsung.com>
Fri, 21 Mar 2025 06:19:27 +0000 (15:19 +0900)
committerdyamy-lee <dyamy.lee@samsung.com>
Fri, 21 Mar 2025 07:08:49 +0000 (16:08 +0900)
Prevent memory leaks by properly freeing g_engine_info before assigning a new instance
Ensure temp->default_lang for avoiding partial leaks when '__set_engine_callback' fails

Change-Id: Ie2926be9716632001405289c8cda08cbf31e9acd

server/ttsd_engine_agent.c

index 16be7dd5522f25d66bae290a5de8dca3723a7f9b..58f1571e01774a04393e7fd74da4634b42abcbcb 100644 (file)
@@ -253,11 +253,24 @@ int ttsd_engine_agent_init(ttse_request_callback_s *callback)
        int ret = __set_engine_callback(callback, temp);
        if (TTSD_ERROR_NONE != ret) {
                SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to get engine info");
+               if (temp->default_lang) {
+                       free(temp->default_lang);
+                       temp->default_lang = NULL;
+               }
                free(temp);
                temp = NULL;
                return ret;
        }
 
+       if (g_engine_info) {
+               if (g_engine_info->default_lang) {
+                       free(g_engine_info->default_lang);
+                       g_engine_info->default_lang = NULL;
+               }
+               free(g_engine_info);
+               g_engine_info = NULL;
+       }
+
        g_engine_info = temp;
        g_agent_init = true;