From b4c464f840132d3ee3b370239a99fa010a6d5dc0 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Mon, 4 Jun 2018 11:35:30 +1000 Subject: [PATCH] Copy names and item keys to stack variables --- nx/source/services/set.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/nx/source/services/set.c b/nx/source/services/set.c index c2bbd306..3c0ee614 100644 --- a/nx/source/services/set.c +++ b/nx/source/services/set.c @@ -349,10 +349,18 @@ Result setsysGetColorSetId(ColorSetId* out) } Result setsysGetSettingsItemValue(const char *name, const char *item_key, void *value_out, size_t value_out_size) { + char send_name[SET_MAX_NAME_SIZE]; + char send_item_key[SET_MAX_NAME_SIZE]; + + memset(send_name, 0, SET_MAX_NAME_SIZE); + memset(send_item_key, 0, SET_MAX_NAME_SIZE); + strncpy(send_name, name, SET_MAX_NAME_SIZE-1); + strncpy(send_item_key, item_key, SET_MAX_NAME_SIZE-1); + IpcCommand c; ipcInitialize(&c); - ipcAddSendStatic(&c, name, SET_MAX_NAME_SIZE, 0); - ipcAddSendStatic(&c, item_key, SET_MAX_NAME_SIZE, 0); + ipcAddSendStatic(&c, send_name, SET_MAX_NAME_SIZE, 0); + ipcAddSendStatic(&c, send_item_key, SET_MAX_NAME_SIZE, 0); ipcAddRecvBuffer(&c, value_out, value_out_size, 0); struct { @@ -383,10 +391,18 @@ Result setsysGetSettingsItemValue(const char *name, const char *item_key, void * } Result setsysGetSettingsItemValueSize(const char *name, const char *item_key, u64 *size_out) { + char send_name[SET_MAX_NAME_SIZE]; + char send_item_key[SET_MAX_NAME_SIZE]; + + memset(send_name, 0, SET_MAX_NAME_SIZE); + memset(send_item_key, 0, SET_MAX_NAME_SIZE); + strncpy(send_name, name, SET_MAX_NAME_SIZE-1); + strncpy(send_item_key, item_key, SET_MAX_NAME_SIZE-1); + IpcCommand c; ipcInitialize(&c); - ipcAddSendStatic(&c, name, SET_MAX_NAME_SIZE, 0); - ipcAddSendStatic(&c, item_key, SET_MAX_NAME_SIZE, 0); + ipcAddSendStatic(&c, send_name, SET_MAX_NAME_SIZE, 0); + ipcAddSendStatic(&c, send_item_key, SET_MAX_NAME_SIZE, 0); struct { u64 magic;