From: Jiajin Cui <cuijiajin@uniontech.com> Verify that CreateUrlCacheEntryW does not write paths longer than MAX_PATH when the file extension fills the output buffer. Signed-off-by: Jiajin Cui <cuijiajin@uniontech.com> --- dlls/wininet/tests/urlcache.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c index b1296d34c7a..1b9c80b8bf3 100644 --- a/dlls/wininet/tests/urlcache.c +++ b/dlls/wininet/tests/urlcache.c @@ -1006,6 +1006,21 @@ static void test_urlcacheW(void) ok(ret, "%ld) DeleteUrlCacheEntryW failed: %ld\n", i, GetLastError()); } } + + /* CreateUrlCacheEntryW has no output buffer size parameter, so it must not + * write more than MAX_PATH characters to lpszFileName. + */ + for(i=0; i<ARRAY_SIZE(bufW) -1; i++) + bufW[i] = 'a'; + bufW[i] = 0; + + ret = CreateUrlCacheEntryW(test_urlW, 0, bufW, bufW, 0); + todo_wine ok(ret, "CreateUrlCacheEntryW failed: %ld\n", GetLastError()); + if(ret) { + ok(lstrlenW(bufW) < MAX_PATH, "cache path too long: %s\n", wine_dbgstr_w(bufW)); + ret = DeleteFileW(bufW); + ok(ret, "DeleteFileW failed: %ld\n", GetLastError()); + } } static void test_FindCloseUrlCache(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11255