From 4e8aa07e07161711520983f4ed453d4abc93daaf Mon Sep 17 00:00:00 2001 From: Pablo Curiel Date: Wed, 1 Jan 2020 20:22:06 -0400 Subject: [PATCH] Don't copy trailing colons in _fsdevMountDevice(). Fixes fsdev_fixpath() returning NULL when a FsFileSystem object is mounted using a device name with a trailing colon. --- nx/source/runtime/devices/fs_dev.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nx/source/runtime/devices/fs_dev.c b/nx/source/runtime/devices/fs_dev.c index a70b7418..19868605 100644 --- a/nx/source/runtime/devices/fs_dev.c +++ b/nx/source/runtime/devices/fs_dev.c @@ -315,7 +315,12 @@ static int _fsdevMountDevice(const char *name, FsFileSystem fs, fsdev_fsdevice * device->fs = fs; memset(device->name, 0, sizeof(device->name)); - strncpy(device->name, name, sizeof(device->name)-1); + + size_t devnamelen = strlen(name); + if (devnamelen > (sizeof(device->name) - 1)) devnamelen = (sizeof(device->name) - 1); // Truncate the device name if it's too long + if (name[devnamelen - 1] == ':') devnamelen--; // Make sure we don't copy a trailing colon if it was provided + + strncpy(device->name, name, devnamelen); int dev = AddDevice(&device->device); if(dev==-1)