mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-29 21:52:45 +00:00
Don't attempt to read past EOF.
Saved enough bytes to make room for this bloat (testing poff < inode.i_size takes 56 bytes!) by copying fs to a local variable.
This commit is contained in:
parent
fd27ec2d05
commit
c24b67b188
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=23905
@ -24,7 +24,7 @@
|
||||
* the rights to redistribute these changes.
|
||||
*
|
||||
* from: Mach, Revision 2.2 92/04/04 11:36:34 rpd
|
||||
* $Id$
|
||||
* $Id: sys.c,v 1.18 1997/02/22 09:30:14 peter Exp $
|
||||
*/
|
||||
|
||||
#include "boot.h"
|
||||
@ -73,12 +73,14 @@ read(char *buffer, int count)
|
||||
{
|
||||
int logno, off, size;
|
||||
int cnt2, bnum2;
|
||||
struct fs *fs_copy;
|
||||
|
||||
while (count) {
|
||||
off = blkoff(fs, poff);
|
||||
logno = lblkno(fs, poff);
|
||||
cnt2 = size = blksize(fs, &inode, logno);
|
||||
bnum2 = fsbtodb(fs, block_map(logno)) + boff;
|
||||
while (count > 0 && poff < inode.i_size) {
|
||||
fs_copy = fs;
|
||||
off = blkoff(fs_copy, poff);
|
||||
logno = lblkno(fs_copy, poff);
|
||||
cnt2 = size = blksize(fs_copy, &inode, logno);
|
||||
bnum2 = fsbtodb(fs_copy, block_map(logno)) + boff;
|
||||
if ( (!off) && (size <= count)) {
|
||||
devread(buffer, bnum2, cnt2);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user