From 56aa0c51dc4d69a1d8879ee3ca764ef4a422ac52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 4 Apr 2005 16:15:02 +0000 Subject: [PATCH] _user_get_safemode_options() would touch the provided buffer even if there was an error (and thus, would trash it). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12234 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/device_manager/settings.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kernel/core/device_manager/settings.cpp b/src/kernel/core/device_manager/settings.cpp index c06bcf7177..fb39589cfe 100644 --- a/src/kernel/core/device_manager/settings.cpp +++ b/src/kernel/core/device_manager/settings.cpp @@ -55,8 +55,9 @@ _user_get_safemode_option(const char *userParameter, char *userBuffer, size_t *_ originalBufferSize = bufferSize; status_t status = get_safemode_option(parameter, buffer, &bufferSize); - if (user_strlcpy(userBuffer, buffer, originalBufferSize) < B_OK - || user_memcpy(_userBufferSize, &bufferSize, sizeof(size_t)) < B_OK) + if (status == B_OK + && (user_strlcpy(userBuffer, buffer, originalBufferSize) < B_OK + || user_memcpy(_userBufferSize, &bufferSize, sizeof(size_t)) < B_OK)) return B_BAD_ADDRESS; return status;