diff options
author | vorlon <vorlon@alioth.debian.org> | 2009-02-14 17:12:39 +0000 |
---|---|---|
committer | vorlon <vorlon@alioth.debian.org> | 2009-02-14 17:12:39 +0000 |
commit | ca16c95b70df7e455b620a5d6eb9f224c725ae44 (patch) | |
tree | 1b2bdb4d178b3e53eec9e5b6d59fa053b6bc86f6 /source/lib/fault.c | |
parent | d113059e3e5c884802d6b8c2741e53247d8ff64e (diff) | |
download | samba-ca16c95b70df7e455b620a5d6eb9f224c725ae44.tar.gz |
Merge samba-3.3.0 into branches/samba/upstream.
git-svn-id: svn://svn.debian.org/svn/pkg-samba/branches/samba/upstream@2570 fc4039ab-9d04-0410-8cac-899223bdd6b0
Diffstat (limited to 'source/lib/fault.c')
-rw-r--r-- | source/lib/fault.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/source/lib/fault.c b/source/lib/fault.c index 1964955f1b..1bd7d038c9 100644 --- a/source/lib/fault.c +++ b/source/lib/fault.c @@ -119,7 +119,18 @@ void dump_core_setup(const char *progname) SAFE_FREE(logbase); return; } - mkdir(corepath,0700); + if (mkdir(corepath,0700) == -1) { + if (errno != EEXIST) { + SAFE_FREE(corepath); + SAFE_FREE(logbase); + return; + } + } + if (chmod(corepath,0700) == -1) { + SAFE_FREE(corepath); + SAFE_FREE(logbase); + return; + } SAFE_FREE(corepath); if (asprintf(&corepath, "%s/cores/%s", @@ -127,11 +138,26 @@ void dump_core_setup(const char *progname) SAFE_FREE(logbase); return; } - mkdir(corepath,0700); + if (mkdir(corepath,0700) == -1) { + if (errno != EEXIST) { + SAFE_FREE(corepath); + SAFE_FREE(logbase); + return; + } + } - sys_chown(corepath,getuid(),getgid()); - chmod(corepath,0700); + if (sys_chown(corepath,getuid(),getgid()) == -1) { + SAFE_FREE(corepath); + SAFE_FREE(logbase); + return; + } + if (chmod(corepath,0700) == -1) { + SAFE_FREE(corepath); + SAFE_FREE(logbase); + return; + } + SAFE_FREE(corepath); SAFE_FREE(logbase); #ifdef HAVE_GETRLIMIT @@ -188,6 +214,11 @@ void dump_core_setup(const char *progname) become_root(); } + if (corepath == NULL) { + DEBUG(0, ("Can not dump core: corepath not set up\n")); + exit(1); + } + if (*corepath != '\0') { /* The chdir might fail if we dump core before we finish * processing the config file. |