[PATCH 1/3] dwrite: Avoid calling memcpy with NULL source.
Esme Povirk
esme at codeweavers.com
Sat Dec 11 14:04:26 CST 2021
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=52187
Signed-off-by: Esme Povirk <esme at codeweavers.com>
---
dlls/dwrite/analyzer.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c
index 7112ca71932..8ecfad5f3a5 100644
--- a/dlls/dwrite/analyzer.c
+++ b/dlls/dwrite/analyzer.c
@@ -868,7 +868,8 @@ static HRESULT get_text_source_ptr(IDWriteTextAnalysisSource *source, UINT32 pos
*buff = malloc(length * sizeof(WCHAR));
if (!*buff)
return E_OUTOFMEMORY;
- memcpy(*buff, *text, len*sizeof(WCHAR));
+ if (*text)
+ memcpy(*buff, *text, len*sizeof(WCHAR));
read = len;
while (read < length && *text) {
@@ -880,6 +881,8 @@ static HRESULT get_text_source_ptr(IDWriteTextAnalysisSource *source, UINT32 pos
free(*buff);
return hr;
}
+ if (!*text)
+ break;
memcpy(*buff + read, *text, min(len, length-read)*sizeof(WCHAR));
read += len;
}
@@ -1009,7 +1012,8 @@ static HRESULT WINAPI dwritetextanalyzer_AnalyzeLineBreakpoints(IDWriteTextAnaly
if (!(buff = calloc(length, sizeof(*buff))))
return E_OUTOFMEMORY;
- memcpy(buff, text, len*sizeof(WCHAR));
+ if (text)
+ memcpy(buff, text, len*sizeof(WCHAR));
read = len;
while (read < length && text) {
@@ -1018,6 +1022,8 @@ static HRESULT WINAPI dwritetextanalyzer_AnalyzeLineBreakpoints(IDWriteTextAnaly
hr = IDWriteTextAnalysisSource_GetTextAtPosition(source, read, &text, &len);
if (FAILED(hr))
goto done;
+ if (!text)
+ break;
memcpy(&buff[read], text, min(len, length-read)*sizeof(WCHAR));
read += len;
}
--
2.25.1
More information about the wine-devel
mailing list