diff --git a/libcomposefs/lcfs-writer-erofs.c b/libcomposefs/lcfs-writer-erofs.c index a1b6a1a1..46817ec9 100644 --- a/libcomposefs/lcfs-writer-erofs.c +++ b/libcomposefs/lcfs-writer-erofs.c @@ -1451,8 +1451,10 @@ static const erofs_inode *lcfs_image_get_erofs_inode(struct lcfs_image_data *dat { const uint8_t *inode_data = data->erofs_metadata + (nid << EROFS_ISLOTBITS); - if (inode_data >= data->erofs_metadata_end) + if (inode_data >= data->erofs_metadata_end) { + errno = EINVAL; return NULL; + } return (const erofs_inode *)inode_data; } @@ -1506,6 +1508,8 @@ static int erofs_readdir_block(struct lcfs_image_data *data, if (child == NULL) { if (errno == ENOTSUP) continue; /* Skip real whiteouts (00-ff) */ + else + return -1; } if (lcfs_node_add_child(parent, child, /* Takes ownership on success */