From 97e0788c6158fa32d8808eb41298e2a4ed787b10 Mon Sep 17 00:00:00 2001 From: Takuho NAKANO Date: Sun, 19 Jul 2020 15:12:44 +0900 Subject: [PATCH] Use strtok_r for strtok --- src/Mayaqua/Str.c | 27 +++++++++++++++++++++++---- src/vpnweb/vpnwebdlg.c | 13 +++++++++++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/Mayaqua/Str.c b/src/Mayaqua/Str.c index ee4d3f50..68885193 100644 --- a/src/Mayaqua/Str.c +++ b/src/Mayaqua/Str.c @@ -2384,6 +2384,9 @@ TOKEN_LIST *ParseToken(char *src, char *separator) char *str1, *str2; UINT len; UINT num; + + char *strtok_save; + if (src == NULL) { ret = ZeroMalloc(sizeof(TOKEN_LIST)); @@ -2402,24 +2405,40 @@ TOKEN_LIST *ParseToken(char *src, char *separator) Lock(token_lock); { - tmp = strtok(str1, separator); +#if (defined _MSC_VER) + tmp = strtok_s(str1, separator, &strtok_save); +#else + tmp = strtok_r(str1, separator, &strtok_save); +#endif // (defined _MSC_VER) num = 0; while (tmp != NULL) { num++; - tmp = strtok(NULL, separator); +#if (defined _MSC_VER) + tmp = strtok_s(NULL, separator, &strtok_save); +#else + tmp = strtok_r(NULL, separator, &strtok_save); +#endif // (defined _MSC_VER) } ret = Malloc(sizeof(TOKEN_LIST)); ret->NumTokens = num; ret->Token = (char **)Malloc(sizeof(char *) * num); num = 0; - tmp = strtok(str2, separator); +#if (defined _MSC_VER) + tmp = strtok_s(str2, separator, &strtok_save); +#else + tmp = strtok_r(str2, separator, &strtok_save); +#endif // (defined _MSC_VER) while (tmp != NULL) { ret->Token[num] = (char *)Malloc(StrLen(tmp) + 1); StrCpy(ret->Token[num], 0, tmp); num++; - tmp = strtok(NULL, separator); +#if (defined _MSC_VER) + tmp = strtok_s(NULL, separator, &strtok_save); +#else + tmp = strtok_r(NULL, separator, &strtok_save); +#endif // (defined _MSC_VER) } } Unlock(token_lock); diff --git a/src/vpnweb/vpnwebdlg.c b/src/vpnweb/vpnwebdlg.c index 0f2bcc9a..1faea151 100644 --- a/src/vpnweb/vpnwebdlg.c +++ b/src/vpnweb/vpnwebdlg.c @@ -465,6 +465,7 @@ UINT VwGetBuildFromVpnInstallInf(char *buf) char tmp[MAX_SIZE]; UINT wp; char seps[] = " \t"; + char *strtok_save; len = lstrlen(buf); @@ -480,10 +481,18 @@ UINT VwGetBuildFromVpnInstallInf(char *buf) if (lstrlen(tmp) >= 1) { - char *token = strtok(tmp, seps); +#if (defined _MSC_VER) + char *token = strtok_s(tmp, seps, &strtok_save); +#else + char *token = strtok_r(tmp, seps, &strtok_save); +#endif // (defined _MSC_VER) if (token != NULL && lstrcmpi(token, VPNINSTALL_INF_BUILDTAG) == 0) { - token = strtok(NULL, seps); +#if (defined _MSC_VER) + token = strtok_s(NULL, seps, &strtok_save); +#else + token = strtok_r(NULL, seps, &strtok_save); +#endif // (defined _MSC_VER) if (token != NULL) { return (UINT)strtod(token, NULL);