Fix all warnings in source3 with gcc4.3.
[ira/wip.git] / source3 / lib / fault.c
index 1964955f1b814693cc1b99dd527413af60d59de6..c24fea1ca91267b7156699fbd38cbaf3a0eac13e 100644 (file)
@@ -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 (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.