1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-22 17:39:53 +03:00

Fix hamcore access: Correcting path separator for hamcore.

This commit is contained in:
hiura 2024-03-16 12:52:46 +09:00
parent 64cb8e1eff
commit 2789b16c12

View File

@ -2124,6 +2124,24 @@ IO *FileOpenEx(char *name, bool write_mode, bool read_lock)
return ret; return ret;
} }
// Replace the specified character in the string with a new character
wchar_t *UniReplaceCharW(wchar_t *src, UINT size, wchar_t c, wchar_t newc) {
if (src == NULL)
{
return NULL;
}
for (; *src; src++, size -= sizeof(wchar_t)) {
if (size < sizeof(wchar_t)) {
break;
}
if (*src == c) {
*src = newc;
}
}
return (wchar_t *)src;
}
IO *FileOpenExW(wchar_t *name, bool write_mode, bool read_lock) IO *FileOpenExW(wchar_t *name, bool write_mode, bool read_lock)
{ {
wchar_t tmp[MAX_SIZE]; wchar_t tmp[MAX_SIZE];
@ -2140,9 +2158,12 @@ IO *FileOpenExW(wchar_t *name, bool write_mode, bool read_lock)
IO *o = ZeroMalloc(sizeof(IO)); IO *o = ZeroMalloc(sizeof(IO));
name++; name++;
UniStrCpy(o->NameW, sizeof(o->NameW), name); UniStrCpy(o->NameW, sizeof(o->NameW), name);
#ifdef OS_WIN32
UniReplaceCharW(o->NameW, sizeof(o->NameW), L'\\', L'/'); // Path separator "/" is used.
#endif // OS_WIN32
UniToStr(o->Name, sizeof(o->Name), o->NameW); UniToStr(o->Name, sizeof(o->Name), o->NameW);
o->HamMode = true; o->HamMode = true;
o->HamBuf = ReadHamcoreW(name); o->HamBuf = ReadHamcoreW(o->NameW);
if (o->HamBuf == NULL) if (o->HamBuf == NULL)
{ {
Free(o); Free(o);