// Get Inode\r
Ext2_int_GetInode(Node, &inode);\r
\r
+ // Sanity Checks\r
+ if(Offset >= inode.i_size) {\r
+ LEAVE('i', 0);\r
+ return 0;\r
+ }\r
+ if(Offset + Length > inode.i_size)\r
+ Length = inode.i_size - Offset;\r
+ \r
block = Offset / disk->BlockSize;\r
Offset = Offset / disk->BlockSize;\r
base = Ext2_int_GetBlockAddr(disk, inode.i_block, block);\r
+ if(base == 0) {\r
+ Warning("[EXT2 ] NULL Block Detected in INode 0x%llx\n", Node->Inode);\r
+ LEAVE('i', 0);\r
+ return 0;\r
+ }\r
\r
// Read only block\r
if(Length <= disk->BlockSize - Offset)\r
while(remLen > disk->BlockSize)\r
{\r
base = Ext2_int_GetBlockAddr(disk, inode.i_block, block);\r
+ if(base == 0) {\r
+ Warning("[EXT2 ] NULL Block Detected in INode 0x%llx\n", Node->Inode);\r
+ LEAVE('i', 0);\r
+ return 0;\r
+ }\r
VFS_ReadAt( disk->FD, base, disk->BlockSize, Buffer);\r
Buffer += disk->BlockSize;\r
remLen -= disk->BlockSize;\r