diff --git a/system/nxplayer/nxplayer_main.c b/system/nxplayer/nxplayer_main.c index 5200c08f9..5ab707163 100644 --- a/system/nxplayer/nxplayer_main.c +++ b/system/nxplayer/nxplayer_main.c @@ -317,10 +317,21 @@ static int nxplayer_cmd_playraw(FAR struct nxplayer_s *pplayer, char *parg) int bpsamp = 0; int samprate = 0; int chmap = 0; - char filename[128]; + size_t len; + char filename[PATH_MAX]; - sscanf(parg, "%s %d %d %d %d", filename, &channels, &bpsamp, - &samprate, &chmap); + parg += strspn(parg, " \t\r\n"); + len = strcspn(parg, " \t\r\n"); + if (len >= sizeof(filename)) + { + len = sizeof(filename) - 1; + } + + memcpy(filename, parg, len); + filename[len] = '\0'; + + sscanf(parg + len, "%d %d %d %d", &channels, &bpsamp, + &samprate, &chmap); /* Try to play the file specified */ diff --git a/system/nxrecorder/nxrecorder_main.c b/system/nxrecorder/nxrecorder_main.c index a8a4c63d6..485784a03 100644 --- a/system/nxrecorder/nxrecorder_main.c +++ b/system/nxrecorder/nxrecorder_main.c @@ -190,10 +190,21 @@ static int nxrecorder_cmd_recordraw(FAR struct nxrecorder_s *precorder, int bpsamp = 0; int samprate = 0; int chmap = 0; - char filename[128]; + size_t len; + char filename[PATH_MAX]; - sscanf(parg, "%s %d %d %d %d", filename, &channels, &bpsamp, - &samprate, &chmap); + parg += strspn(parg, " \t\r\n"); + len = strcspn(parg, " \t\r\n"); + if (len >= sizeof(filename)) + { + len = sizeof(filename) - 1; + } + + memcpy(filename, parg, len); + filename[len] = '\0'; + + sscanf(parg + len, "%d %d %d %d", &channels, &bpsamp, + &samprate, &chmap); /* Try to record the file specified */ @@ -259,10 +270,21 @@ static int nxrecorder_cmd_record(FAR struct nxrecorder_s *precorder, int bpsamp = 0; int samprate = 0; int chmap = 0; - char filename[128]; + size_t len; + char filename[PATH_MAX]; - sscanf(parg, "%s %d %d %d %d", filename, &channels, &bpsamp, - &samprate, &chmap); + parg += strspn(parg, " \t\r\n"); + len = strcspn(parg, " \t\r\n"); + if (len >= sizeof(filename)) + { + len = sizeof(filename) - 1; + } + + memcpy(filename, parg, len); + filename[len] = '\0'; + + sscanf(parg + len, "%d %d %d %d", &channels, &bpsamp, + &samprate, &chmap); /* Try to record the file specified */