summaryrefslogtreecommitdiff
path: root/mysys/mf_pack.c
diff options
context:
space:
mode:
authorunknown <reggie@mdk10.(none)>2005-05-20 16:04:10 -0500
committerunknown <reggie@mdk10.(none)>2005-05-20 16:04:10 -0500
commitc1ae672adda45a1b8c5637b8f4d6a3f91378ea20 (patch)
tree3c11d9563166e2b2ee03a1165069c1f02dfba30a /mysys/mf_pack.c
parent25d661adfc144d0de605ff07907ed9004155466d (diff)
downloadmariadb-git-c1ae672adda45a1b8c5637b8f4d6a3f91378ea20.tar.gz
BUG# 9148: Denial of service
The problem was that on Windows the access method indicates that access to file such as "com1" and "lpt1" is allowed (since they are device names) and this causes mysql to attempt to open them as databases or tables. The fix was to write our own my_access method that uses other Win32 functions to determine if the given argument is indeed a file and has to requested mode. VC++Files/mysys/mysys.dsp: added my_access VC++Files/mysys/mysys_ia64.dsp: added my_access.c include/my_sys.h: if on windows, we use my_access. if not on windows, then my_access points to the native access method mysys/Makefile.am: added my_access to mysys build file mysys/mf_pack.c: changed call to access to my_access sql/sql_db.cc: changed call to access to my_access
Diffstat (limited to 'mysys/mf_pack.c')
-rw-r--r--mysys/mf_pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c
index 9193238708d..79b194289c6 100644
--- a/mysys/mf_pack.c
+++ b/mysys/mf_pack.c
@@ -226,7 +226,7 @@ void symdirget(char *dir)
{
char buff[FN_REFLEN];
char *pos=strend(dir);
- if (dir[0] && pos[-1] != FN_DEVCHAR && access(dir, F_OK))
+ if (dir[0] && pos[-1] != FN_DEVCHAR && !my_access(dir, F_OK))
{
File file;
uint length;