From 4840c9d4ae39b6a9aa5062842c0053f43f6cf4f3 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Mon, 28 Apr 2025 17:09:12 +0200 Subject: [PATCH] [winpr,stream] fill up empty stream In Stream_Write_UTF16_String_From_UTF8 fill up WCHAR if requested even for empty source strings --- winpr/libwinpr/utils/stream.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/winpr/libwinpr/utils/stream.c b/winpr/libwinpr/utils/stream.c index d1ed7b718..0572c4177 100644 --- a/winpr/libwinpr/utils/stream.c +++ b/winpr/libwinpr/utils/stream.c @@ -466,19 +466,20 @@ BOOL Stream_CheckAndLogRequiredLengthWLogExVa(wLog* log, DWORD level, wStream* s SSIZE_T Stream_Write_UTF16_String_From_UTF8(wStream* s, size_t wcharLength, const char* src, size_t length, BOOL fill) { + SSIZE_T rc = 0; WCHAR* str = Stream_PointerAs(s, WCHAR); - if (length == 0) - return 0; + if (length != 0) + { + if (!Stream_CheckAndLogRequiredCapacityOfSize(STREAM_TAG, s, wcharLength, sizeof(WCHAR))) + return -1; - if (!Stream_CheckAndLogRequiredCapacityOfSize(STREAM_TAG, s, wcharLength, sizeof(WCHAR))) - return -1; + rc = ConvertUtf8NToWChar(src, length, str, wcharLength); + if (rc < 0) + return -1; - SSIZE_T rc = ConvertUtf8NToWChar(src, length, str, wcharLength); - if (rc < 0) - return -1; - - Stream_Seek(s, (size_t)rc * sizeof(WCHAR)); + Stream_Seek(s, (size_t)rc * sizeof(WCHAR)); + } if (fill) Stream_Zero(s, (wcharLength - (size_t)rc) * sizeof(WCHAR));