From f0ead75ff159d550229e2d3498aff31b40d849c7 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 3 Jun 2016 13:38:27 +0000 Subject: win32.c: fail before getting ITEMIDLIST * win32/win32.c (get_special_folder): fail before getting ITEMIDLIST if the buffer is less than 260 word which SHGetPathFromIDListW requires. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/win32.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'win32') diff --git a/win32/win32.c b/win32/win32.c index c66ce614ff..18cf4f49e9 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -433,12 +433,13 @@ get_special_folder(int n, WCHAR *buf, size_t len) func = (get_path_func) get_proc_address("shell32", "SHGetPathFromIDListEx", NULL); } + if (!func && len < 260) return FALSE; if (SHGetSpecialFolderLocation(NULL, n, &pidl) == 0) { if (func) { f = func(pidl, buf, len, 0); } - else if (len >= 260) { + else { f = SHGetPathFromIDListW(pidl, buf); } SHGetMalloc(&alloc); -- cgit v1.2.3