task_save_handler - rewrite code - put string on stack instead

of heap, avoid using strlcat
This commit is contained in:
libretroadmin 2024-06-16 18:44:08 +02:00
parent c722653c97
commit c05ec27334
1 changed files with 14 additions and 17 deletions

View File

@ -537,8 +537,7 @@ static void task_save_handler(retro_task_t *task)
if (task_get_cancelled(task) || written != remaining) if (task_get_cancelled(task) || written != remaining)
{ {
size_t err_size = 8192 * sizeof(char); char msg[PATH_MAX_LENGTH];
char *err = (char*)malloc(err_size);
if (state->flags & SAVE_TASK_FLAG_UNDO_SAVE) if (state->flags & SAVE_TASK_FLAG_UNDO_SAVE)
{ {
@ -546,21 +545,19 @@ static void task_save_handler(retro_task_t *task)
MSG_FAILED_TO_UNDO_SAVE_STATE); MSG_FAILED_TO_UNDO_SAVE_STATE);
RARCH_ERR("[State]: %s \"%s\".\n", failed_undo_str, RARCH_ERR("[State]: %s \"%s\".\n", failed_undo_str,
undo_save_buf.path); undo_save_buf.path);
err[0] = '\0'; snprintf(msg, sizeof(msg), "%s \"RAM\".", failed_undo_str);
snprintf(err, err_size - 1, "%s \"RAM\".", failed_undo_str);
} }
else else
{ {
size_t _len = strlcpy(err, size_t _len = strlcpy(msg,
msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO), msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO),
err_size - 1); sizeof(msg));
err[ _len] = ' '; msg[ _len] = ' ';
err[++_len] = '\0'; msg[++_len] = '\0';
strlcat(err, state->path, err_size - 1); strlcpy(msg + _len, state->path, sizeof(msg) - _len);
} }
task_set_error(task, strdup(err)); task_set_error(task, strdup(msg));
free(err);
task_save_handler_finished(task, state); task_save_handler_finished(task, state);
return; return;
} }