X-Git-Url: http://git.hcoop.net/hcoop/debian/exim4.git/blobdiff_plain/da9b083f3825a9518c935ccf60b557f1f3888332..df703fd6e9f885a09fcaeb17a7a6331c89de0124:/debian/patches/50-relax-appendfile-chown-openafs.patch diff --git a/debian/patches/50-relax-appendfile-chown-openafs.patch b/debian/patches/50-relax-appendfile-chown-openafs.patch dissimilarity index 65% index b7b5ef2..ba0b272 100644 --- a/debian/patches/50-relax-appendfile-chown-openafs.patch +++ b/debian/patches/50-relax-appendfile-chown-openafs.patch @@ -1,35 +1,34 @@ ---- a/src/transports/appendfile.c -+++ b/src/transports/appendfile.c -@@ -1769,19 +1769,28 @@ - goto RETURN; - } - -- /* We have successfully created and opened the file. Ensure that the group -+ /* We have successfully created and opened the file. Ensure that the owner - and the mode are correct. */ - -- if(Uchown(filename, uid, gid) || Uchmod(filename, mode)) -+ /* Ignore failed chown if check_owner is disabled. */ -+ if(Uchown(filename, uid, gid) && ob->check_owner) - { - addr->basic_errno = errno; -- addr->message = string_sprintf("while setting perms on mailbox %s", -+ addr->message = string_sprintf("while setting owner on mailbox %s", - filename); - addr->transport_return = FAIL; - goto RETURN; - } -- } - -+ if(Uchmod(filename, mode)) -+ { -+ addr->basic_errno = errno; -+ addr->message = string_sprintf("while setting chmod on mailbox %s", -+ filename); -+ addr->transport_return = FAIL; -+ goto RETURN; -+ } -+ } - - /* The file already exists. Test its type, ownership, and permissions, and - save the inode for checking later. If symlinks are permitted (not the +--- a/src/transports/appendfile.c ++++ b/src/transports/appendfile.c +@@ -2580,13 +2580,24 @@ + /* Why are these here? Put in because they are present in the non-maildir + directory case above. */ + +- if(Uchown(filename, uid, gid) || Uchmod(filename, mode)) +- { +- addr->basic_errno = errno; +- addr->message = string_sprintf("while setting perms on maildir %s", +- filename); +- return FALSE; +- } ++ /* Ignore failed chown if check_owner is disabled. */ ++ if(Uchown(filename, uid, gid) && ob->check_owner) ++ { ++ addr->basic_errno = errno; ++ addr->message = string_sprintf("while setting owner on maildir %s", ++ filename); ++ addr->transport_return = FAIL; ++ goto RETURN; ++ } ++ ++ if(Uchmod(filename, mode)) ++ { ++ addr->basic_errno = errno; ++ addr->message = string_sprintf("while setting chmod on maildir %s", ++ filename); ++ addr->transport_return = FAIL; ++ goto RETURN; ++ } + } + + #endif /* SUPPORT_MAILDIR */