916e606784
CVE-2022-39316, CVE-2022-39317: Add missing length checks in zgfx CVE-2022-39318: Fix division by zero in urbdrc channel CVE-2022-39319: Add missing length checks in urbdrc channel CVE-2022-39320: Ensure urb_create_iocompletion uses size_t CVE-2022-39347: Fix path validation in drive channel CVE-2022-41877: Add missing length check in drive channel Resolves: #2145140
67 lines
1.7 KiB
Diff
67 lines
1.7 KiB
Diff
From ddc6dacd06b41ed5001b1c884b5d5c9e0a70e275 Mon Sep 17 00:00:00 2001
|
|
From: akallabeth <akallabeth@posteo.net>
|
|
Date: Thu, 10 Nov 2022 15:54:28 +0100
|
|
Subject: [PATCH] [winpr, crt] Added wcsstr implementation
|
|
|
|
(cherry picked from commit 6c034ba6117a4efc9266e845fe9a9a92ed4ee61d)
|
|
---
|
|
winpr/include/winpr/string.h | 3 +++
|
|
winpr/libwinpr/crt/string.c | 20 ++++++++++++++++++++
|
|
2 files changed, 23 insertions(+)
|
|
|
|
diff --git a/winpr/include/winpr/string.h b/winpr/include/winpr/string.h
|
|
index 3b907c444..2d7126210 100644
|
|
--- a/winpr/include/winpr/string.h
|
|
+++ b/winpr/include/winpr/string.h
|
|
@@ -62,6 +62,8 @@ extern "C"
|
|
WINPR_API size_t _wcslen(const WCHAR* str);
|
|
WINPR_API size_t _wcsnlen(const WCHAR* str, size_t maxNumberOfElements);
|
|
|
|
+ WINPR_API WCHAR* _wcsstr(const WCHAR* str, const WCHAR* strSearch);
|
|
+
|
|
WINPR_API WCHAR* _wcschr(const WCHAR* str, WCHAR c);
|
|
WINPR_API WCHAR* _wcsrchr(const WCHAR* str, WCHAR c);
|
|
|
|
@@ -74,6 +76,7 @@ extern "C"
|
|
#define _wcsncmp wcsncmp
|
|
#define _wcslen wcslen
|
|
#define _wcsnlen wcsnlen
|
|
+#define _wcsstr wcsstr
|
|
#define _wcschr wcschr
|
|
#define _wcsrchr wcsrchr
|
|
|
|
diff --git a/winpr/libwinpr/crt/string.c b/winpr/libwinpr/crt/string.c
|
|
index 5dcf4b3f1..efd7d166c 100644
|
|
--- a/winpr/libwinpr/crt/string.c
|
|
+++ b/winpr/libwinpr/crt/string.c
|
|
@@ -147,6 +147,26 @@ size_t _wcsnlen(const WCHAR* str, size_t max)
|
|
return x;
|
|
}
|
|
|
|
+/* _wcsstr -> wcsstr */
|
|
+
|
|
+WCHAR* _wcsstr(const WCHAR* str, const WCHAR* strSearch)
|
|
+{
|
|
+ assert(str);
|
|
+ assert(strSearch);
|
|
+
|
|
+ if (strSearch[0] == '\0')
|
|
+ return str;
|
|
+
|
|
+ const size_t searchLen = _wcslen(strSearch);
|
|
+ while (*str)
|
|
+ {
|
|
+ if (_wcsncmp(str, strSearch, searchLen) == 0)
|
|
+ return str;
|
|
+ str++;
|
|
+ }
|
|
+ return NULL;
|
|
+}
|
|
+
|
|
/* _wcschr -> wcschr */
|
|
|
|
WCHAR* _wcschr(const WCHAR* str, WCHAR c)
|
|
--
|
|
2.37.1
|
|
|