diff --git a/misc/version.c b/misc/version.c
index e5d5028327d83b2cc1964764615c62763641affb..b1671bed98d0007be4b0a8be9987eb31ba478ab8 100644
--- a/misc/version.c
+++ b/misc/version.c
@@ -17,6 +17,7 @@
 #include "debugtools.h"
 #include "neexe.h"
 #include "winversion.h"
+#include "winerror.h"
 
 DEFAULT_DEBUG_CHANNEL(ver)
 
@@ -331,6 +332,7 @@ BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16 *v)
     if (v->dwOSVersionInfoSize != sizeof(OSVERSIONINFO16))
     {
         WARN("wrong OSVERSIONINFO size from app");
+        SetLastError(ERROR_INSUFFICIENT_BUFFER);
         return FALSE;
     }
     v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;
@@ -351,6 +353,7 @@ BOOL WINAPI GetVersionExA(OSVERSIONINFOA *v)
     if (v->dwOSVersionInfoSize != sizeof(OSVERSIONINFOA))
     {
         WARN("wrong OSVERSIONINFO size from app");
+        SetLastError(ERROR_INSUFFICIENT_BUFFER);
         return FALSE;
     }
     v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;
@@ -372,6 +375,7 @@ BOOL WINAPI GetVersionExW(OSVERSIONINFOW *v)
     if (v->dwOSVersionInfoSize!=sizeof(OSVERSIONINFOW))
     {
         WARN("wrong OSVERSIONINFO size from app");
+        SetLastError(ERROR_INSUFFICIENT_BUFFER);
         return FALSE;
     }
     v->dwMajorVersion = VersionData[ver].getVersionEx.dwMajorVersion;