diff options
author | unknown <reggie@mdk10.(none)> | 2005-05-21 12:31:58 -0500 |
---|---|---|
committer | unknown <reggie@mdk10.(none)> | 2005-05-21 12:31:58 -0500 |
commit | 442c072fdf6c7dd2b7fcad5a44c6438b980629f4 (patch) | |
tree | 1e3a7eeced13fbee15770b63f2c8c20e3a0d17d1 /mysys/my_open.c | |
parent | 9b8e02741ab73838ffa9dd26dd94a560d9d3d667 (diff) | |
download | mariadb-git-442c072fdf6c7dd2b7fcad5a44c6438b980629f4.tar.gz |
BUG# 9148: Denial of service
This is a second patch needing another review. The first patch didn't solve
the entire problem. open and fopen on Windows will still open
files like "com1.sym" when they shouldn't. This patch
checks that the file exists before trying to open it.
mysys/my_fopen.c:
on Windows, if we are not creating a file the we call my_access to make sure the
file exists before trying to open it.
mysys/my_open.c:
on Windows, if we are not creating a file the we call my_access to make sure the
file exists before trying to open it.
Diffstat (limited to 'mysys/my_open.c')
-rw-r--r-- | mysys/my_open.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mysys/my_open.c b/mysys/my_open.c index ca5c0d8683f..1f3bb95b5a2 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -46,6 +46,12 @@ File my_open(const char *FileName, int Flags, myf MyFlags) DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); #if defined(MSDOS) || defined(__WIN__) || defined(__EMX__) || defined(OS2) + /* if we are not creating, then we need to use my_access to make + * sure the file exists since Windows doesn't handle files like + * "com1.sym" very well + */ + if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) + return -1; if (Flags & O_SHARE) fd = sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, MY_S_IREAD | MY_S_IWRITE); |