mirror of
https://github.com/samba-team/samba.git
synced 2025-01-13 13:18:06 +03:00
Fix bug 6302: Give the VFS a chance to read from 0-byte files
This commit is contained in:
parent
fee4c99be4
commit
386a5d99b3
@ -3358,14 +3358,13 @@ static void send_file_readX(connection_struct *conn, struct smb_request *req,
|
||||
return;
|
||||
}
|
||||
|
||||
if (startpos > sbuf.st_size) {
|
||||
smb_maxcnt = 0;
|
||||
} else if (smb_maxcnt > (sbuf.st_size - startpos)) {
|
||||
smb_maxcnt = (sbuf.st_size - startpos);
|
||||
}
|
||||
|
||||
if (smb_maxcnt == 0) {
|
||||
goto normal_read;
|
||||
if (!S_ISREG(sbuf.st_mode) || (startpos > sbuf.st_size)
|
||||
|| (smb_maxcnt > (sbuf.st_size - startpos))) {
|
||||
/*
|
||||
* We already know that we would do a short read, so don't
|
||||
* try the sendfile() path.
|
||||
*/
|
||||
goto nosendfile_read;
|
||||
}
|
||||
|
||||
#if defined(WITH_SENDFILE)
|
||||
@ -3482,6 +3481,8 @@ normal_read:
|
||||
return;
|
||||
}
|
||||
|
||||
nosendfile_read:
|
||||
|
||||
reply_outbuf(req, 12, smb_maxcnt);
|
||||
|
||||
nread = read_file(fsp, smb_buf(req->outbuf), startpos, smb_maxcnt);
|
||||
|
Loading…
Reference in New Issue
Block a user