summaryrefslogtreecommitdiff
path: root/mysys/mf_iocache.c
diff options
context:
space:
mode:
authorunknown <Kristofer.Pettersson@naruto.>2006-10-09 21:13:37 +0200
committerunknown <Kristofer.Pettersson@naruto.>2006-10-09 21:13:37 +0200
commitc6a67e69331762f1e9e2ba725cb418c4d87a8a27 (patch)
tree9dfccd2afeed2f6beb74f168a7fbf2434e0d61dc /mysys/mf_iocache.c
parent6930d9d2695c5bdd2caea3d941834f105ba3e292 (diff)
downloadmariadb-git-c6a67e69331762f1e9e2ba725cb418c4d87a8a27.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_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. 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 newpos is initialized.
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 cd2a140182e..eb8b992c601 100644
--- a/mysys/mf_iocache.c
+++ b/mysys/mf_iocache.c
@@ -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)
{