[PATCH 1/3] server: fix some error detection

Eric Pouech eric.pouech at gmail.com
Tue Mar 8 10:43:44 CST 2022


Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 server/mapping.c |    4 ++--
 server/request.c |    3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/server/mapping.c b/server/mapping.c
index 8d4332d240f..6b0785c1c0c 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -691,13 +691,13 @@ static unsigned int get_image_params( struct mapping *mapping, file_pos_t file_s
 
     if (!file_size) return STATUS_INVALID_FILE_FOR_SECTION;
     size = pread( unix_fd, &mz, sizeof(mz), 0 );
-    if (size < sizeof(mz.dos)) return STATUS_INVALID_IMAGE_NOT_MZ;
+    if (size < 0 || size < sizeof(mz.dos)) return STATUS_INVALID_IMAGE_NOT_MZ;
     if (mz.dos.e_magic != IMAGE_DOS_SIGNATURE) return STATUS_INVALID_IMAGE_NOT_MZ;
     mz_size = size;
     pos = mz.dos.e_lfanew;
 
     size = pread( unix_fd, &nt, sizeof(nt), pos );
-    if (size < sizeof(nt.Signature) + sizeof(nt.FileHeader)) return STATUS_INVALID_IMAGE_PROTECT;
+    if (size < 0 || size < sizeof(nt.Signature) + sizeof(nt.FileHeader)) return STATUS_INVALID_IMAGE_PROTECT;
     /* zero out Optional header in the case it's not present or partial */
     opt_size = max( nt.FileHeader.SizeOfOptionalHeader, offsetof( IMAGE_OPTIONAL_HEADER32, CheckSum ));
     size = min( size, sizeof(nt.Signature) + sizeof(nt.FileHeader) + opt_size );
diff --git a/server/request.c b/server/request.c
index 7021741c765..1bc92d479ae 100644
--- a/server/request.c
+++ b/server/request.c
@@ -265,7 +265,8 @@ static void send_reply( union generic_reply *reply )
         vec[1].iov_base = current->reply_data;
         vec[1].iov_len  = current->reply_size;
 
-        if ((ret = writev( get_unix_fd( current->reply_fd ), vec, 2 )) < sizeof(*reply)) goto error;
+        ret = writev( get_unix_fd( current->reply_fd ), vec, 2 );
+        if (ret < 0 || ret < sizeof(*reply)) goto error;
 
         if ((current->reply_towrite = current->reply_size - (ret - sizeof(*reply))))
         {




More information about the wine-devel mailing list