From d7690f68a8b37db530181643eeedab497c4c5908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 22 Dec 2019 09:26:08 +0100 Subject: [PATCH] userlandfs: ReadAttr() with user_memcpy() should fix #14969 Change-Id: Iaf4e1362841b65cb56f112d379db041ef3d8ab08 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2047 Reviewed-by: Adrien Destugues --- .../kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp index 21b9a76b3b..62529fd272 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Volume.cpp @@ -2882,8 +2882,10 @@ Volume::ReadAttr(void* _node, void* cookie, off_t pos, || reply->bytesRead > bufferSize) { return B_BAD_DATA; } - if (reply->bytesRead > 0) - memcpy(buffer, readBuffer, reply->bytesRead); + if (reply->bytesRead > 0 + && user_memcpy(buffer, readBuffer, reply->bytesRead) < B_OK) { + return B_BAD_ADDRESS; + } *bytesRead = reply->bytesRead; _SendReceiptAck(port); return error;