VITA: fix crash when boot params is missing

This commit is contained in:
cyee 2020-11-07 14:03:12 -08:00
parent 64c0abdf0c
commit 9e9e9af8dd

View File

@ -342,25 +342,30 @@ static void frontend_psp_exec(const char *path, bool should_load_game)
RARCH_LOG("Attempt to load executable: [%s].\n", path); RARCH_LOG("Attempt to load executable: [%s].\n", path);
#if defined(VITA) #if defined(VITA)
RARCH_LOG("Attempt to load executable: %d [%s].\n", args, argp); RARCH_LOG("Attempt to load executable: %d [%s].\n", args, argp);
int ret;
#ifdef IS_SALAMANDER #ifdef IS_SALAMANDER
sceAppMgrGetAppParam(boot_params); sceAppMgrGetAppParam(boot_params);
if (strstr(boot_params,"psgm:play")) if (strstr(boot_params,"psgm:play"))
{ {
int ret; char *param1 = strstr(boot_params, "&param=");
char *param1 = strstr(boot_params, "&param=")+7;
char *param2 = strstr(boot_params, "&param2="); char *param2 = strstr(boot_params, "&param2=");
memcpy(core_name, param1, param2 - param1); if (param1 != NULL && param2 != NULL)
core_name[param2-param1] = 0; {
sprintf(argp, param2 + 8); param1 += 7;
ret = sceAppMgrLoadExec(core_name, (char * const*)((const char*[]){argp, 0}), NULL); memcpy(core_name, param1, param2 - param1);
RARCH_LOG("Attempt to load executable: [%d].\n", ret); core_name[param2-param1] = 0;
sprintf(argp, param2 + 8);
ret = sceAppMgrLoadExec(core_name, (char * const*)((const char*[]){argp, 0}), NULL);
RARCH_LOG("Attempt to load executable: [%d].\n", ret);
goto exit;
}
RARCH_LOG("Required boot params missing. Continue nornal boot.");
} }
else
#endif #endif
{ ret = sceAppMgrLoadExec(path, args == 0 ? NULL : (char * const*)((const char*[]){argp, 0}), NULL);
int ret = sceAppMgrLoadExec(path, args == 0 ? NULL : (char * const*)((const char*[]){argp, 0}), NULL); RARCH_LOG("Attempt to load executable: [%d].\n", ret);
RARCH_LOG("Attempt to load executable: [%d].\n", ret); exit:
} return;
#else #else
exitspawn_kernel(path, args, argp); exitspawn_kernel(path, args, argp);
#endif #endif