From 85148847d5c84b745a6d75d6ee6aaec21b1556b9 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sun, 22 Oct 2006 23:43:06 +0000 Subject: [PATCH] Changed the sys_acl_get_file() function to return ENOTSUP for the non-supported SMB_ACL_TYPE_DEFAULT ACLs. --- acls.diff | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/acls.diff b/acls.diff index 082803d..08dbcf0 100644 --- a/acls.diff +++ b/acls.diff @@ -1547,7 +1547,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. pathjoin(cmpbuf, MAXPATHLEN, basis_dir[j], fname); - if (link_stat(cmpbuf, stp, 0) < 0) + if (link_stat(cmpbuf, &sxp->st, 0) < 0) - match_level = 0; + return -1; } if (match_level == 3 && !copy_dest) { @@ -1812,7 +1812,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. ITEM_LOCAL_CHANGE, 0, NULL); } if (code != FNONE && verbose) { -@@ -1056,18 +1108,22 @@ static void recv_generator(char *fname, +@@ -1059,18 +1111,22 @@ static void recv_generator(char *fname, code = FNONE; } } @@ -1843,7 +1843,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. statret = -1; if (verbose > 2) { rprintf(FINFO,"mknod(%s,0%o,0x%x)\n", -@@ -1080,7 +1136,7 @@ static void recv_generator(char *fname, +@@ -1083,7 +1139,7 @@ static void recv_generator(char *fname, } else { set_file_attrs(fname, file, NULL, 0); if (itemizing) { @@ -1852,7 +1852,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. ITEM_LOCAL_CHANGE, 0, NULL); } if (code != FNONE && verbose) -@@ -1094,14 +1150,14 @@ static void recv_generator(char *fname, +@@ -1097,14 +1153,14 @@ static void recv_generator(char *fname, } } else { if (itemizing) @@ -1870,7 +1870,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } if (!S_ISREG(file->mode)) { -@@ -1135,7 +1191,7 @@ static void recv_generator(char *fname, +@@ -1138,7 +1194,7 @@ static void recv_generator(char *fname, } if (update_only && statret == 0 @@ -1879,7 +1879,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. if (verbose > 1) rprintf(FINFO, "%s is newer\n", fname); return; -@@ -1144,20 +1200,20 @@ static void recv_generator(char *fname, +@@ -1147,20 +1203,20 @@ static void recv_generator(char *fname, fnamecmp = fname; fnamecmp_type = FNAMECMP_FNAME; @@ -1904,7 +1904,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } if (j >= 0) { fnamecmp = fnamecmpbuf; -@@ -1167,7 +1223,7 @@ static void recv_generator(char *fname, +@@ -1170,7 +1226,7 @@ static void recv_generator(char *fname, } real_ret = statret; @@ -1913,7 +1913,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. if (partial_dir && (partialptr = partial_dir_fname(fname)) != NULL && link_stat(partialptr, &partial_st, 0) == 0 -@@ -1186,7 +1242,7 @@ static void recv_generator(char *fname, +@@ -1189,7 +1245,7 @@ static void recv_generator(char *fname, rprintf(FINFO, "fuzzy basis selected for %s: %s\n", fname, fnamecmpbuf); } @@ -1922,7 +1922,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. statret = 0; fnamecmp = fnamecmpbuf; fnamecmp_type = FNAMECMP_FUZZY; -@@ -1195,7 +1251,7 @@ static void recv_generator(char *fname, +@@ -1198,7 +1254,7 @@ static void recv_generator(char *fname, if (statret != 0) { if (preserve_hard_links && file->link_u.links @@ -1931,7 +1931,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. itemizing, code, HL_SKIP)) return; if (stat_errno == ENOENT) -@@ -1205,39 +1261,52 @@ static void recv_generator(char *fname, +@@ -1208,39 +1264,52 @@ static void recv_generator(char *fname, return; } @@ -1991,7 +1991,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. fnamecmp = partialptr; fnamecmp_type = FNAMECMP_PARTIAL_DIR; statret = 0; -@@ -1261,17 +1330,21 @@ static void recv_generator(char *fname, +@@ -1264,17 +1333,21 @@ static void recv_generator(char *fname, pretend_missing: /* pretend the file didn't exist */ if (preserve_hard_links && file->link_u.links @@ -2016,7 +2016,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS))) { close(fd); -@@ -1282,7 +1355,7 @@ static void recv_generator(char *fname, +@@ -1285,7 +1358,7 @@ static void recv_generator(char *fname, full_fname(backupptr)); free(back_file); close(fd); @@ -2025,7 +2025,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } if ((f_copy = do_open(backupptr, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 0600)) < 0) { -@@ -1290,14 +1363,14 @@ static void recv_generator(char *fname, +@@ -1293,14 +1366,14 @@ static void recv_generator(char *fname, full_fname(backupptr)); free(back_file); close(fd); @@ -2042,7 +2042,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } if (verbose > 2) -@@ -1315,24 +1388,32 @@ static void recv_generator(char *fname, +@@ -1318,24 +1391,32 @@ static void recv_generator(char *fname, iflags |= ITEM_BASIS_TYPE_FOLLOWS; if (fnamecmp_type == FNAMECMP_FUZZY) iflags |= ITEM_XNAME_FOLLOWS; @@ -2080,7 +2080,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. if (f_copy >= 0) { close(f_copy); -@@ -1345,6 +1426,13 @@ static void recv_generator(char *fname, +@@ -1348,6 +1429,13 @@ static void recv_generator(char *fname, } close(fd); @@ -2094,7 +2094,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. } void generate_files(int f_out, struct file_list *flist, char *local_name) -@@ -1404,6 +1492,8 @@ void generate_files(int f_out, struct fi +@@ -1407,6 +1495,8 @@ void generate_files(int f_out, struct fi * notice that and let us know via the redo pipe (or its closing). */ ignore_timeout = 1; @@ -2238,7 +2238,7 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. SIVAL(numbuf, 0, ndx); --- old/lib/sysacls.c +++ new/lib/sysacls.c -@@ -0,0 +1,3245 @@ +@@ -0,0 +1,3247 @@ +/* + Unix SMB/CIFS implementation. + Samba system utilities for ACL support. @@ -4543,8 +4543,10 @@ latest ACL-enabling patch to send files to an older ACL-enabled rsync. + uid_t user_id; + + /* AIX has no DEFAULT */ -+ if ( type == SMB_ACL_TYPE_DEFAULT ) ++ if ( type == SMB_ACL_TYPE_DEFAULT ) { ++ errno = ENOTSUP; + return NULL; ++ } + + /* Get the acl using statacl */ + -- 2.34.1