diff --git a/src/add-ons/kernel/file_systems/udf/Icb.cpp b/src/add-ons/kernel/file_systems/udf/Icb.cpp index fedf284a53..a4dda56040 100644 --- a/src/add-ons/kernel/file_systems/udf/Icb.cpp +++ b/src/add-ons/kernel/file_systems/udf/Icb.cpp @@ -57,9 +57,9 @@ Icb::Read(off_t pos, void *buffer, size_t *length, uint32 *block) DEBUG_INIT_ETC(CF_PUBLIC | CF_HIGH_VOLUME, "Icb", ("pos: %lld, buffer: %p, length: (%p)->%ld", pos, buffer, length, (length ? *length : 0))); - if (!buffer || !length) - RETURN(B_BAD_VALUE); - + if (!buffer || !length || pos < 0) + RETURN(B_BAD_VALUE); + if (uint64(pos) >= Length()) { *length = 0; return B_OK;