https://git.reactos.org/?p=reactos.git;a=commitdiff;h=fea414b9ed2cc7a81fdda…
commit fea414b9ed2cc7a81fddad18bc90f9d023beee15
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Thu Oct 26 10:39:12 2023 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Thu Oct 26 10:39:12 2023 +0900
[REGEDIT] Use <strsafe.h> functions strictly Part 2 (#5832)
Follow-up to #5825. Use StringCchPrintfW instead of swprintf.
CORE-18876
---
base/applications/regedit/regproc.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/base/applications/regedit/regproc.c b/base/applications/regedit/regproc.c
index 8311a477712..f140b672381 100644
--- a/base/applications/regedit/regproc.c
+++ b/base/applications/regedit/regproc.c
@@ -1191,7 +1191,8 @@ static size_t export_value_name(FILE *fp, WCHAR *name, size_t len,
BOOL unicode)
WCHAR *str = REGPROC_escape_string(name, len, &line_len);
WCHAR *buf = malloc((line_len + 4) * sizeof(WCHAR));
#ifdef __REACTOS__
- line_len = swprintf(buf, L"\"%s\"=", str);
+ StringCchPrintfW(buf, line_len + 4, L"\"%s\"=", str);
+ line_len = wcslen(buf);
#else
line_len = swprintf(buf, line_len + 4, L"\"%s\"=", str);
#endif
@@ -1218,7 +1219,7 @@ static void export_string_data(WCHAR **buf, WCHAR *data, size_t
size)
str = REGPROC_escape_string(data, len, &line_len);
*buf = malloc((line_len + 3) * sizeof(WCHAR));
#ifdef __REACTOS__
- swprintf(*buf, L"\"%s\"", str);
+ StringCchPrintfW(*buf, line_len + 3, L"\"%s\"", str);
#else
swprintf(*buf, line_len + 3, L"\"%s\"", str);
#endif
@@ -1229,7 +1230,7 @@ static void export_dword_data(WCHAR **buf, DWORD *data)
{
*buf = malloc(15 * sizeof(WCHAR));
#ifdef __REACTOS__
- swprintf(*buf, L"dword:%08x", *data);
+ StringCchPrintfW(*buf, 15, L"dword:%08x", *data);
#else
swprintf(*buf, 15, L"dword:%08x", *data);
#endif
@@ -1249,7 +1250,8 @@ static size_t export_hex_data_type(FILE *fp, DWORD type, BOOL
unicode)
{
WCHAR *buf = malloc(15 * sizeof(WCHAR));
#ifdef __REACTOS__
- line_len = swprintf(buf, L"hex(%x):", type);
+ StringCchPrintfW(buf, 15, L"hex(%x):", type);
+ line_len = wcslen(buf);
#else
line_len = swprintf(buf, 15, L"hex(%x):", type);
#endif
@@ -1280,7 +1282,8 @@ static void export_hex_data(FILE *fp, WCHAR **buf, DWORD type, DWORD
line_len,
for (i = 0, pos = 0; i < size; i++)
{
#ifdef __REACTOS__
- pos += swprintf(*buf + pos, L"%02x", ((BYTE *)data)[i]);
+ StringCchPrintfW(*buf + pos, 3, L"%02x", ((BYTE *)data)[i]);
+ pos += wcslen(*buf + pos);
#else
pos += swprintf(*buf + pos, 3, L"%02x", ((BYTE *)data)[i]);
#endif
@@ -1346,7 +1349,7 @@ static WCHAR *build_subkey_path(WCHAR *path, DWORD path_len, WCHAR
*subkey_name,
subkey_path = malloc((path_len + subkey_len + 2) * sizeof(WCHAR));
#ifdef __REACTOS__
- swprintf(subkey_path, L"%s\\%s", path, subkey_name);
+ StringCchPrintfW(subkey_path, path_len + subkey_len + 2, L"%s\\%s", path,
subkey_name);
#else
swprintf(subkey_path, path_len + subkey_len + 2, L"%s\\%s", path,
subkey_name);
#endif
@@ -1360,7 +1363,7 @@ static void export_key_name(FILE *fp, WCHAR *name, BOOL unicode)
buf = malloc((lstrlenW(name) + 7) * sizeof(WCHAR));
#ifdef __REACTOS__
- swprintf(buf, L"\r\n[%s]\r\n", name);
+ StringCchPrintfW(buf, lstrlenW(name) + 7, L"\r\n[%s]\r\n", name);
#else
swprintf(buf, lstrlenW(name) + 7, L"\r\n[%s]\r\n", name);
#endif