]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix bug #1305 make errors obtaining acl during backup non-fatal
authorKern Sibbald <kern@sibbald.com>
Wed, 17 Jun 2009 18:41:32 +0000 (18:41 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 17 Jun 2009 18:41:32 +0000 (18:41 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8907 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/patches/3.0.1-acl-error.patch [new file with mode: 0644]
bacula/src/filed/acl.c
bacula/src/version.h
bacula/technotes

diff --git a/bacula/patches/3.0.1-acl-error.patch b/bacula/patches/3.0.1-acl-error.patch
new file mode 100644 (file)
index 0000000..8e6a245
--- /dev/null
@@ -0,0 +1,72 @@
+
+ This patch can be applied to version 3.0.1 and makes
+ error conditions obtaining acls during backup non-fatal.
+ This should fix bug #1305.
+
+ Apply it to version 3.0.1 with:
+
+ cd <bacula-source>
+ patch -p0 <3.0.1-acl-error.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+
+Index: src/filed/acl.c
+===================================================================
+--- src/filed/acl.c    (revision 8902)
++++ src/filed/acl.c    (working copy)
+@@ -406,31 +406,35 @@
+       pm_strcpy(jcr->acl_data, "");
+       acl_free(acl);
+-      return -1;
++      return 0;                       /* non-fatal error */
+    }
+    /*
+     * Handle errors gracefully.
+     */
+-   switch (errno) {
++   if (acl == (acl_t)NULL) {
++      switch (errno) {
+ #if defined(BACL_ENOTSUP)
+-   case BACL_ENOTSUP:
+-      /*
+-       * Not supported, just pretend there is nothing to see
+-       */
+-      pm_strcpy(jcr->acl_data, "");
+-      return 0;
++      case BACL_ENOTSUP:
++         break;                       /* not supported */
+ #endif
+-   default:
+-      berrno be;
+-      Jmsg2(jcr, M_ERROR, 0, _("acl_get_file error on file \"%s\": ERR=%s\n"),
+-         jcr->last_fname, be.bstrerror());
+-      Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",  
+-         jcr->last_fname, be.bstrerror());
++      default:
++         berrno be;
++         /* Some real error */
++         Jmsg2(jcr, M_ERROR, 0, _("acl_get_file error on file \"%s\": ERR=%s\n"),
++            jcr->last_fname, be.bstrerror());
++         Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",  
++            jcr->last_fname, be.bstrerror());
+-      pm_strcpy(jcr->acl_data, "");
+-      return -1;
++         pm_strcpy(jcr->acl_data, "");
++         return 0;                    /* non-fatal error */
++      }
+    }
++   /*
++    * Not supported, just pretend there is nothing to see
++    */
++   pm_strcpy(jcr->acl_data, "");
++   return 0;
+ }
+ /*
index 8155bb7f39d4eebc124519f15fae5490c6434536..1e43df13e74d52b4e336458884fe8a71a5e1cd1f 100644 (file)
@@ -406,31 +406,35 @@ static int generic_get_acl_from_os(JCR *jcr, bacl_type acltype)
       pm_strcpy(jcr->acl_data, "");
       acl_free(acl);
 
-      return -1;
+      return 0;                       /* non-fatal error */
    }
 
    /*
     * Handle errors gracefully.
     */
-   switch (errno) {
+   if (acl == (acl_t)NULL) {
+      switch (errno) {
 #if defined(BACL_ENOTSUP)
-   case BACL_ENOTSUP:
-      /*
-       * Not supported, just pretend there is nothing to see
-       */
-      pm_strcpy(jcr->acl_data, "");
-      return 0;
+      case BACL_ENOTSUP:
+         break;                       /* not supported */
 #endif
-   default:
-      berrno be;
-      Jmsg2(jcr, M_ERROR, 0, _("acl_get_file error on file \"%s\": ERR=%s\n"),
-         jcr->last_fname, be.bstrerror());
-      Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",  
-         jcr->last_fname, be.bstrerror());
+      default:
+         berrno be;
+         /* Some real error */
+         Jmsg2(jcr, M_ERROR, 0, _("acl_get_file error on file \"%s\": ERR=%s\n"),
+            jcr->last_fname, be.bstrerror());
+         Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",  
+            jcr->last_fname, be.bstrerror());
 
-      pm_strcpy(jcr->acl_data, "");
-      return -1;
+         pm_strcpy(jcr->acl_data, "");
+         return 0;                    /* non-fatal error */
+      }
    }
+   /*
+    * Not supported, just pretend there is nothing to see
+    */
+   pm_strcpy(jcr->acl_data, "");
+   return 0;
 }
 
 /*
index 66973bbabbbab0dfbb8e07bcc8144438632396ce..ed36f1abaa82bb09096bc122731b8794a15e437f 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "3.0.2"
-#define BDATE   "08 June 2009"
-#define LSMDATE "08Jun09"
+#define BDATE   "17 June 2009"
+#define LSMDATE "17Jun09"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2009 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2009"       /* year for copyright messages in progs */
index e608b0c6609bc2f306b81a580b43115eff90835d..34dc8632f8603eec07f76b5a0a415b08b2431dfb 100644 (file)
@@ -3,6 +3,7 @@
 General:
 
 17Jun09
+kes  Fix bug #1305 make errors obtaining acl during backup non-fatal
 kes  Fix bug #1309 inappropriate error message during btape fill command
 kes  Fix bug #1307 AllowHigherDuplicates=no prevents automatic job escalation
 12Jun09