summaryrefslogtreecommitdiff
path: root/mysys/mf_iocache.c
diff options
context:
space:
mode:
authorunknown <thek@kpdesk.mysql.com>2006-11-06 11:41:52 +0100
committerunknown <thek@kpdesk.mysql.com>2006-11-06 11:41:52 +0100
commit51a360a0051323837c2885d29c92bd7cd2072341 (patch)
tree6d9edb8fcc47bbf75020fba3d9e738189b2cb2a6 /mysys/mf_iocache.c
parent626abc5205745ff002be2c4910460999df294439 (diff)
downloadmariadb-git-51a360a0051323837c2885d29c92bd7cd2072341.tar.gz
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_cache function call and this led my_seek to be called desipite 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. mysys/mf_iocache.c: Added a test to only trigger my_seek function calls if we have a valid file descriptor. mysys/my_seek.c: Refactored incomplete condition into an assertion. This also ensures that variable newpos is initialized properly.
Diffstat (limited to 'mysys/mf_iocache.c')
-rw-r--r--mysys/mf_iocache.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c
index a7937da0cc2..5f0069d9bed 100644
--- a/mysys/mf_iocache.c
+++ b/mysys/mf_iocache.c
@@ -313,7 +313,11 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type,
if (info->type == READ_CACHE)
{
info->write_end=info->write_buffer+info->buffer_length;
- info->seek_not_done=1;
+ /*
+ Trigger a new seek only if we have a valid
+ file handle.
+ */
+ info->seek_not_done= (info->file >= 0);
}
info->end_of_file = ~(my_off_t) 0;
}