[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