diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 8e5b7a9c915493..e1244c2d14e102 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1643,6 +1643,13 @@ bool Process::validate_read_from_kernel(LinearAddress laddr) const return validate_read(laddr.as_ptr(), 1); } +bool Process::validate_read_str(const char* str) +{ + if (!validate_read(str, 1)) + return false; + return validate_read(str, strlen(str) + 1); +} + bool Process::validate_read(const void* address, size_t size) const { if (is_ring0()) { diff --git a/Kernel/Process.h b/Kernel/Process.h index a61e5a1dbdceae..09741b84e21f31 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -267,7 +267,7 @@ class Process : public InlineLinkedListNode, public Weakable { bool validate_read(const void*, size_t) const; bool validate_write(void*, size_t) const; - bool validate_read_str(const char* str) { return validate_read(str, strlen(str) + 1); } + bool validate_read_str(const char* str); template bool validate_read_typed(T* value, size_t count = 1) { return validate_read(value, sizeof(T) * count); } template bool validate_write_typed(T* value, size_t count = 1) { return validate_write(value, sizeof(T) * count); }