name_buf = (char *) item + sizeof(*item);
TRACE("Compare names %.*s and %.*s\n", name_len, name, item->name_len, name_buf);
- if (_strnicmp(name, name_buf, name_len) == 0)
+ if (name_len == item->name_len && _strnicmp(name, name_buf, name_len) == 0)
{
*ret_item = *item;
result = TRUE;
if (size > dlen - offset)
size = dlen - offset;
+ /* Handle sparse extent */
+ if (extent->disk_bytenr == 0 && extent->disk_num_bytes == 0)
+ {
+ RtlZeroMemory(out, size);
+ return size;
+ }
+
physical = logical_physical(extent->disk_bytenr);
if (physical == INVALID_ADDRESS)
{
return ENOENT;
}
+ phandle->position += rd;
*BytesRead = rd;
return ESUCCESS;
}