From 0bb9fd3868a01d4da9ac0fb1250d883e6873b70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 26 Feb 2018 18:59:01 +0100 Subject: [PATCH] write_overlay: Read()/Write() with user_memcpy(). --- .../layers/write_overlay/write_overlay.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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);