[PATCH 3/6] msvcrt: findfirst/findnext functions don't set doserrno on invalid arguments.

Kai Tietz ktietz70 at googlemail.com
Thu Aug 8 11:39:12 CDT 2013


Due line wrap of this gmail-thng, I attach the changes.

Sorry,
Kai
-------------- next part --------------
From 05a24add4c8e6276718fd6d1121bc6edd3fe9e1b Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktietz70 at googlemail.com>
Date: Thu, 29 Dec 2011 15:15:18 +0100
Subject: [PATCH 4/7] msvcrt: findfirst/findnext functions don't set doserrno
 on invalid arguments.

---
 dlls/msvcrt/dir.c |  100 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 100 insertions(+), 0 deletions(-)

diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c
index b91b857..2249c7f 100644
--- a/dlls/msvcrt/dir.c
+++ b/dlls/msvcrt/dir.c
@@ -436,6 +436,11 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst(const char * fspec, struct MSVCRT__findd
   WIN32_FIND_DATAA find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileA(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -455,6 +460,11 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst32(const char * fspec, struct MSVCRT__fin
   WIN32_FIND_DATAA find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileA(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -476,6 +486,11 @@ MSVCRT_intptr_t CDECL MSVCRT__wfindfirst(const MSVCRT_wchar_t * fspec, struct MS
   WIN32_FIND_DATAW find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileW(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -518,6 +533,11 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirsti64(const char * fspec, struct MSVCRT__fi
   WIN32_FIND_DATAA find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileA(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -539,6 +559,11 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst64(const char * fspec, struct MSVCRT__fin
   WIN32_FIND_DATAA find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileA(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -560,6 +585,11 @@ MSVCRT_intptr_t CDECL MSVCRT__wfindfirst64(const MSVCRT_wchar_t * fspec, struct
   WIN32_FIND_DATAW find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileW(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -581,6 +611,11 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst64i32(const char * fspec, struct MSVCRT__
   WIN32_FIND_DATAA find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileA(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -602,6 +637,12 @@ MSVCRT_intptr_t CDECL MSVCRT__wfindfirst64i32(const MSVCRT_wchar_t * fspec, stru
   WIN32_FIND_DATAW find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   hfind  = FindFirstFileW(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -623,6 +664,11 @@ MSVCRT_intptr_t CDECL MSVCRT__wfindfirsti64(const MSVCRT_wchar_t * fspec, struct
   WIN32_FIND_DATAW find_data;
   HANDLE hfind;
 
+  if (!ft || !fspec)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
   hfind  = FindFirstFileW(fspec, &find_data);
   if (hfind == INVALID_HANDLE_VALUE)
   {
@@ -654,6 +700,12 @@ int CDECL MSVCRT__findnext(MSVCRT_intptr_t hand, struct MSVCRT__finddata_t * ft)
 {
   WIN32_FIND_DATAA find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileA((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -671,6 +723,12 @@ int CDECL MSVCRT__findnext32(MSVCRT_intptr_t hand, struct MSVCRT__finddata32_t *
 {
   WIN32_FIND_DATAA find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileA((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -690,6 +748,12 @@ int CDECL MSVCRT__wfindnext(MSVCRT_intptr_t hand, struct MSVCRT__wfinddata_t * f
 {
   WIN32_FIND_DATAW find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileW((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -709,6 +773,12 @@ int CDECL MSVCRT__findnexti64(MSVCRT_intptr_t hand, struct MSVCRT__finddatai64_t
 {
   WIN32_FIND_DATAA find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileA((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -728,6 +798,12 @@ int CDECL MSVCRT__findnext64(MSVCRT_intptr_t hand, struct MSVCRT__finddata64_t *
 {
   WIN32_FIND_DATAA find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileA((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -747,6 +823,12 @@ int CDECL MSVCRT__wfindnext64(MSVCRT_intptr_t hand, struct MSVCRT__wfinddata64_t
 {
   WIN32_FIND_DATAW find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileW((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -766,6 +848,12 @@ int CDECL MSVCRT__findnext64i32(MSVCRT_intptr_t hand, struct MSVCRT__finddata64i
 {
   WIN32_FIND_DATAA find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileA((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -785,6 +873,12 @@ int CDECL MSVCRT__wfindnexti64(MSVCRT_intptr_t hand, struct MSVCRT__wfinddatai64
 {
   WIN32_FIND_DATAW find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileW((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
@@ -804,6 +898,12 @@ int CDECL MSVCRT__wfindnext64i32(MSVCRT_intptr_t hand, struct MSVCRT__wfinddata6
 {
   WIN32_FIND_DATAW find_data;
 
+  if ((HANDLE)hand == INVALID_HANDLE_VALUE || !ft)
+  {
+    *MSVCRT__errno () = MSVCRT_EINVAL;
+    return -1;
+  }
+
   if (!FindNextFileW((HANDLE)hand, &find_data))
   {
     *MSVCRT__errno() = MSVCRT_ENOENT;
-- 
1.7.9


More information about the wine-patches mailing list