Bug#23010 _my_b_read() passing illegal file handles to my_seek()
- The io cache flag seek_not_done was not set properly in the reinit_ io_chache function call and this led my_seek to be called despite an invalid file handle. - Added a test in reinit_io_cache to ensure we have a valid file handle before setting seek_not_done flag.
This commit is contained in:
parent
d1fb415ad4
commit
3b316569a7
@ -333,7 +333,11 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type,
|
||||
{
|
||||
info->read_end=info->write_pos;
|
||||
info->end_of_file=my_b_tell(info);
|
||||
info->seek_not_done=1;
|
||||
/*
|
||||
Trigger a new seek only if we have a valid
|
||||
file handle.
|
||||
*/
|
||||
info->seek_not_done= (info->file != -1);
|
||||
}
|
||||
else if (type == WRITE_CACHE)
|
||||
{
|
||||
|
@ -29,8 +29,13 @@ my_off_t my_seek(File fd, my_off_t pos, int whence,
|
||||
whence, MyFlags));
|
||||
DBUG_ASSERT(pos != MY_FILEPOS_ERROR); /* safety check */
|
||||
|
||||
if (-1 != fd)
|
||||
newpos=lseek(fd, pos, whence);
|
||||
/*
|
||||
Make sure we are using a valid file descriptor!
|
||||
*/
|
||||
DBUG_ASSERT(fd != -1);
|
||||
|
||||
newpos= lseek(fd, pos, whence);
|
||||
|
||||
if (newpos == (os_off_t) -1)
|
||||
{
|
||||
my_errno=errno;
|
||||
|
Loading…
x
Reference in New Issue
Block a user