summaryrefslogtreecommitdiff
path: root/mysys/my_open.c
diff options
context:
space:
mode:
authormonty@mysql.com <>2005-05-25 12:56:47 +0300
committermonty@mysql.com <>2005-05-25 12:56:47 +0300
commitfb90aaa7b59d7437e9a76bc668e4b57e74d35afa (patch)
tree52be2414a34bc47a37198260633286ca16187fec /mysys/my_open.c
parent93565c8e7de218bf8c8316cc3a1d862cb33a948b (diff)
downloadmariadb-git-fb90aaa7b59d7437e9a76bc668e4b57e74d35afa.tar.gz
Cleanup during code review
Faster detection of wrong table names (like PRN) on windows
Diffstat (limited to 'mysys/my_open.c')
-rw-r--r--mysys/my_open.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/mysys/my_open.c b/mysys/my_open.c
index ea4d99c3e8c..7cf40b57403 100644
--- a/mysys/my_open.c
+++ b/mysys/my_open.c
@@ -47,12 +47,15 @@ File my_open(const char *FileName, int Flags, myf MyFlags)
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
+ Check that we don't try to open or create a file name that may
+ cause problems for us in the future (like PRN)
*/
- if (! (Flags & O_CREAT) && my_access(FileName, F_OK))
- return -1;
+ if (check_if_legal_filename(FileName))
+ {
+ errno= EACCES;
+ DBUG_RETURN(my_register_filename(-1, FileName, FILE_BY_OPEN,
+ EE_FILENOTFOUND, MyFlags));
+ }
if (Flags & O_SHARE)
fd = sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO,
MY_S_IREAD | MY_S_IWRITE);