diff options
author | unknown <Kristofer.Pettersson@naruto.> | 2006-10-09 21:13:37 +0200 |
---|---|---|
committer | unknown <Kristofer.Pettersson@naruto.> | 2006-10-09 21:13:37 +0200 |
commit | c6a67e69331762f1e9e2ba725cb418c4d87a8a27 (patch) | |
tree | 9dfccd2afeed2f6beb74f168a7fbf2434e0d61dc /mysys/my_seek.c | |
parent | 6930d9d2695c5bdd2caea3d941834f105ba3e292 (diff) | |
download | mariadb-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/my_seek.c')
-rw-r--r-- | mysys/my_seek.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/mysys/my_seek.c b/mysys/my_seek.c index 8035312496d..006d0013695 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -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; |