Ext2FileSystem::readInode() should return an empty buffer for 0-length files.

This commit is contained in:
Andreas Kling 2018-10-13 00:49:52 +02:00
parent c2d42710bb
commit 750b27cb07
Notes: sideshowbarker 2024-07-19 18:49:27 +09:00
2 changed files with 4 additions and 0 deletions

View file

@ -27,6 +27,7 @@ public:
return *this;
}
static ByteBuffer createEmpty() { return ByteBuffer(Buffer<byte>::createUninitialized(0)); }
static ByteBuffer createUninitialized(size_t size) { return ByteBuffer(Buffer<byte>::createUninitialized(size)); }
static ByteBuffer copy(const byte* data, size_t size) { return ByteBuffer(Buffer<byte>::copy(data, size)); }
static ByteBuffer wrap(byte* data, size_t size) { return ByteBuffer(Buffer<byte>::wrap(data, size)); }

View file

@ -260,6 +260,9 @@ ByteBuffer Ext2FileSystem::readInode(InodeIdentifier inode) const
return nullptr;
}
if (e2inode->i_size == 0)
return ByteBuffer::createEmpty();
// Symbolic links shorter than 60 characters are store inline inside the i_block array.
// This avoids wasting an entire block on short links. (Most links are short.)
static const unsigned maxInlineSymlinkLength = 60;