diff --git a/src/add-ons/kernel/file_systems/udf/Icb.cpp b/src/add-ons/kernel/file_systems/udf/Icb.cpp index b9576be827..fedf284a53 100644 --- a/src/add-ons/kernel/file_systems/udf/Icb.cpp +++ b/src/add-ons/kernel/file_systems/udf/Icb.cpp @@ -57,8 +57,13 @@ 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 || uint64(pos) >= Length()) + if (!buffer || !length) RETURN(B_BAD_VALUE); + + if (uint64(pos) >= Length()) { + *length = 0; + return B_OK; + } switch (IcbTag().descriptor_flags()) { case ICB_DESCRIPTOR_TYPE_SHORT: {