summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authormonty@mashka.mysql.fi <>2003-03-11 21:45:39 +0200
committermonty@mashka.mysql.fi <>2003-03-11 21:45:39 +0200
commit7fdf7a410146d9a5fa0c188b448ce005ed9ca7f2 (patch)
treed17bc1d0b5fdc6a665d6c6e6eb79be134b419f2d /mysys
parent2c9a16873c24c5f0bd286846b95669d261218e2f (diff)
parentc38125c5db32151c6696a96dd0469db1064c6027 (diff)
downloadmariadb-git-7fdf7a410146d9a5fa0c188b448ce005ed9ca7f2.tar.gz
merge with 3.23 to get:
- Better detection of crashed .MYI file - Ignore writeable config files
Diffstat (limited to 'mysys')
-rw-r--r--mysys/default.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/mysys/default.c b/mysys/default.c
index c354e1744bc..cfdda17fb5f 100644
--- a/mysys/default.c
+++ b/mysys/default.c
@@ -38,6 +38,7 @@
#include "mysys_priv.h"
#include "m_string.h"
#include "m_ctype.h"
+#include <my_dir.h>
char *defaults_extra_file=0;
@@ -61,13 +62,13 @@ DATADIR,
NullS,
};
-#define default_ext ".cnf" /* extension for config file */
+#define default_ext ".cnf" /* extension for config file */
#ifdef __WIN__
#include <winbase.h>
#define windows_ext ".ini"
#endif
-static my_bool search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc,
+static my_bool search_default_file(DYNAMIC_ARRAY *args,MEM_ROOT *alloc,
const char *dir, const char *config_file,
const char *ext, TYPELIB *group);
@@ -242,6 +243,20 @@ static my_bool search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc,
{
strmov(name,config_file);
}
+ fn_format(name,name,"","",4);
+#if !defined(__WIN__) && !defined(OS2)
+ {
+ MY_STAT stat_info;
+ if (!my_stat(name,&stat_info,MYF(0)))
+ return 0;
+ if (stat_info.st_mode & S_IWOTH) /* ignore world-writeable files */
+ {
+ fprintf(stderr, "warning: World-writeable config file %s is ignored\n",
+ name);
+ return 0;
+ }
+ }
+#endif
if (!(fp = my_fopen(fn_format(name,name,"","",4),O_RDONLY,MYF(0))))
return 0; /* Ignore wrong files */