hrev51812 adds 1 changeset to branch 'master'
old head: fb6387f2b46230b8ce98d58ef76fc99157ed2bf8
new head: 0bb9fd3868a01d4da9ac0fb1250d883e6873b70f
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=0bb9fd3868a0+%5Efb6387f2b462
----------------------------------------------------------------------------
0bb9fd3868a0: write_overlay: Read()/Write() with user_memcpy().
[ Jérôme Duval <jerome.duval@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev51812
Commit: 0bb9fd3868a01d4da9ac0fb1250d883e6873b70f
URL: http://cgit.haiku-os.org/haiku/commit/?id=0bb9fd3868a0
Author: Jérôme Duval <jerome.duval@xxxxxxxxx>
Date: Mon Feb 26 17:59:01 2018 UTC
----------------------------------------------------------------------------
1 file changed, 6 insertions(+), 6 deletions(-)
.../file_systems/layers/write_overlay/write_overlay.cpp | 12 ++++++------
----------------------------------------------------------------------------
diff --git
a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
index 93078a8c51..4c48cfca8c 100644
--- a/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
+++ b/src/add-ons/kernel/file_systems/layers/write_overlay/write_overlay.cpp
@@ -776,8 +776,8 @@ OverlayInode::Read(void *_cookie, off_t position, void
*buffer, size_t *length,
if (ioRequest != NULL) {
ioRequest->CopyData(source, ioRequest->Offset()
+ ((addr_t)pointer - (addr_t)buffer),
copyLength);
- } else
- memcpy(pointer, source, copyLength);
+ } else if (user_memcpy(pointer, source, copyLength) <
B_OK)
+ return B_BAD_ADDRESS;
bytesLeft -= copyLength;
position += copyLength;
@@ -838,8 +838,8 @@ OverlayInode::Write(void *_cookie, off_t position, const
void *buffer,
void *target = other->buffer + (newPosition -
other->position);
if (ioRequest != NULL)
ioRequest->CopyData(ioRequest->Offset(), target, length);
- else
- memcpy(target, buffer, length);
+ else if (user_memcpy(target, buffer, length) <
B_OK)
+ return B_BAD_ADDRESS;
fStat.st_mtime = time(NULL);
if (fIsAttribute) {
@@ -897,8 +897,8 @@ OverlayInode::Write(void *_cookie, off_t position, const
void *buffer,
void *target = element->buffer + (position - newPosition);
if (ioRequest != NULL)
ioRequest->CopyData(0, target, length);
- else
- memcpy(target, buffer, length);
+ else if (user_memcpy(target, buffer, length) < B_OK)
+ return B_BAD_ADDRESS;
fStat.st_mtime = time(NULL);