summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-08-20 18:12:19 +0200
committerAmlal <amlal@nekernel.org>2025-08-20 18:12:19 +0200
commitb24a39dac7e9a9ba89d333f86c6824e3004d4fcd (patch)
treef17263293a5d3638e35c60e10a1f2f3e30a25003 /dev
parentdb1d0e53cc21678ace07b72652ed7b3b1054da30 (diff)
feat: acpi: harden ACPI `operator[]` and `Checksum` methods.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/kernel/src/ACPIFactoryInterface.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/dev/kernel/src/ACPIFactoryInterface.cc b/dev/kernel/src/ACPIFactoryInterface.cc
index 01f30500..51a0e308 100644
--- a/dev/kernel/src/ACPIFactoryInterface.cc
+++ b/dev/kernel/src/ACPIFactoryInterface.cc
@@ -70,11 +70,11 @@ ErrorOr<voidPtr> ACPIFactoryInterface::Find(const Char* signature) {
@param len the length of it.
*/
bool ACPIFactoryInterface::Checksum(const Char* checksum, SSizeT len) {
- if (len == 0) return 1;
+ if (len == 0 || !checksum) return false;
- char chr = 0;
+ Char chr = 0;
- for (int index = 0; index < len; ++index) {
+ for (SSizeT index = 0L; index < len; ++index) {
chr += checksum[index];
}
@@ -82,6 +82,7 @@ bool ACPIFactoryInterface::Checksum(const Char* checksum, SSizeT len) {
}
ErrorOr<voidPtr> ACPIFactoryInterface::operator[](const Char* signature) {
+ if (!singature) return <voidPtr>{-kErrorInvalidData};
return this->Find(signature);
}
} // namespace Kernel