+12
−20
Loading
The v9fs_xattr_read() and v9fs_xattr_write() are passed a guest originated offset: they must ensure this offset does not go beyond the size of the extended attribute that was set in v9fs_xattrcreate(). Unfortunately, the current code implement these checks with unsafe calculations on 32 and 64 bit values, which may allow a malicious guest to cause OOB access anyway. Fix this by comparing the offset and the xattr size, which are both uint64_t, before trying to compute the effective number of bytes to read or write. Suggested-by:Greg Kurz <groug@kaod.org> Signed-off-by:
Li Qiang <liqiang6-s@360.cn> Reviewed-by:
Greg Kurz <groug@kaod.org> Reviewed-By:
Guido Günther <agx@sigxcpu.org> Signed-off-by:
Greg Kurz <groug@kaod.org>