[haiku-commits] Change in haiku[master]: kernel/fs: On write, skip address check on 0 length and NULL ptr

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 2 Oct 2020 20:18:21 +0000

From Alex von Gluck IV <kallisti5@xxxxxxxxxxx>:

Alex von Gluck IV has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/3285 ;)


Change subject: kernel/fs: On write, skip address check on 0 length and NULL ptr
......................................................................

kernel/fs: On write, skip address check on 0 length and NULL ptr

* golang performs a write of 0 length with a NULL buffer to
  "create" an empty file. We return BAD_ADDRESS for this.
* If condition above occurs, continue as a length of 0 means
  we won't even read the passed buffer.

Change-Id: I8718abb92f5865a7b6f4fb7f2b74f803497ebef0
---
M src/system/kernel/fs/fd.cpp
1 file changed, 3 insertions(+), 2 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/85/3285/1

diff --git a/src/system/kernel/fs/fd.cpp b/src/system/kernel/fs/fd.cpp
index 91fe26c..bf4129e 100644
--- a/src/system/kernel/fs/fd.cpp
+++ b/src/system/kernel/fs/fd.cpp
@@ -731,8 +731,9 @@
 static ssize_t
 common_user_io(int fd, off_t pos, void* buffer, size_t length, bool write)
 {
-       if (!IS_USER_ADDRESS(buffer))
-               return B_BAD_ADDRESS;
+       if (length > 0 && buffer != NULL)
+               if (!IS_USER_ADDRESS(buffer))
+                       return B_BAD_ADDRESS;

        if (pos < -1)
                return B_BAD_VALUE;

--
To view, visit https://review.haiku-os.org/c/haiku/+/3285
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I8718abb92f5865a7b6f4fb7f2b74f803497ebef0
Gerrit-Change-Number: 3285
Gerrit-PatchSet: 1
Gerrit-Owner: Alex von Gluck IV <kallisti5@xxxxxxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: kernel/fs: On write, skip address check on 0 length and NULL ptr - Gerrit