[patch 7 of 7]: 0007-_getdiskfree-sets-errno-and-checks-additionally-for-invalid-second-argument

Kai Tietz ktietz70 at googlemail.com
Thu Dec 29 10:16:13 CST 2011


Hi,

this patch corrects (IMHO) behavior of argument checks for getdiskfree
function.  My tests have shown that this function sets for
invalid-arguments (also for disk > 26) errno to EINVAL.  Additionally
for invalid argument 'd' errno is also set to EINVAL.

Regards,
Kai
-------------- next part --------------
From 4acb8530a585adffef8616d52b0e833f524666ba Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktietz70 at googlemail.com>
Date: Thu, 29 Dec 2011 16:15:40 +0100
Subject: _getdiskfree sets errno and checks additionally for invalid second
 argument.

---
 dlls/msvcrt/dir.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c
index 223439a..0afde07 100644
--- a/dlls/msvcrt/dir.c
+++ b/dlls/msvcrt/dir.c
@@ -1230,8 +1230,11 @@ unsigned int CDECL MSVCRT__getdiskfree(unsigned int disk, struct MSVCRT__diskfre
   DWORD ret[4];
   unsigned int err;
 
-  if (disk > 26)
-    return ERROR_INVALID_PARAMETER; /* MSVCRT doesn't set errno here */
+  if (!d || disk > 26)
+    {
+      *MSVCRT__errno() = MSVCRT_EINVAL;
+      return ERROR_INVALID_PARAMETER;
+    }
 
   drivespec[0] += disk; /* make a drive letter */
 
-- 
1.7.5.1


More information about the wine-patches mailing list