xfsprogs: avoid array overflow in pf_batch_read()
PATCH 1/1 xfsprogs: avoid array overflow in pf_batch_read()
The while loop in pf_batch_read, and the code preceeding it, is really... quite a thing. I'd love to rewrite it, but I haven't yet found a particularly cleaner way.
It cleverly hides the fact that we might increment "num" past the last index of bplist[] and then assign to it. This corrupts memory.
Rather than major surgery for now, just go for the simple fix, and break out of the loop if we've increased "num" past the last index.
---
repair/prefetch.c +2 -0
@@ -429,6 +429,8 @@ pf_batch_read(if (which !=PF_META_ONLY || !B_IS_INODE (XFS_BUF_PRIORITY (bplist[num]))) num++; +if (num ==MAX_BUFS ) +break ; bplist[num] =btree_lookup_next (args->io_queue, &fsbno); }if (!num)
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 10 lines · Eric Sandeen
The while loop in
pf_batch_read, and the code preceeding it, is really... quite a thing. I'd love to rewrite it, but I haven't yet found a particularly cleaner way.It cleverly hides the fact that we might increment "num" past the last index of bplist[] and then assign to it. This corrupts memory.
Rather than major surgery for now, just go for the simple fix, and break out of the loop if we've increased "num" past the last index.
looks good.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
This has been committed.
Thanks
--Rich
commit e49f30a76f5e910092bd285ebef3f7641a09ec2e
Author: Eric Sandeen <[email protected]> Date: Fri Aug 30 03:55:16 2013 +0000
xfsprogs: avoid array overflow in pf_batch_read()
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs