Compare commits

...

6 Commits
rawhide ... f11

Author SHA1 Message Date
Fedora Release Engineering 3e9e2552c9 dist-git conversion 2010-07-28 09:34:50 +00:00
Kamil Dudka 8920fea074 - prevent setfacl --restore from SIGSEGV on malformed restore file
(#576550)
2010-03-24 16:58:06 +00:00
Kamil Dudka 706b25668b - tweaked setfacl tree walk flags (#488674) 2009-12-26 20:21:37 +00:00
Kamil Dudka aba1d1b6b3 - new upstream bugfix release
- big cleanup in patches
2009-12-20 11:35:48 +00:00
Bill Nottingham d10db4da0b Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:24:45 +00:00
Jesse Keating 1eceecd24d Initialize branch F-11 for acl 2009-04-15 05:28:38 +00:00
18 changed files with 101 additions and 3951 deletions

View File

@ -1 +0,0 @@
acl_2.2.47-1.tar.gz

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
acl-2.2.49.src.tar.gz

View File

@ -1,21 +0,0 @@
# Makefile for source rpm: acl
# $Id: Makefile,v 1.1 2004/09/09 02:52:01 cvsdist Exp $
NAME := acl
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@ -1,11 +1,13 @@
--- acl-2.2.3/include/buildmacros.multilib 2003-01-28 19:00:05.000000000 -0500
+++ acl-2.2.3/include/buildmacros 2003-01-28 19:04:13.000000000 -0500
@@ -103,8 +103,6 @@
../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_DEVLIB_DIR)/$(LIBNAME).la ; \
diff --git a/include/buildmacros b/include/buildmacros
index ab89182..17423c0 100644
--- a/include/buildmacros
+++ b/include/buildmacros
@@ -88,8 +88,6 @@ INSTALL_LTLIB_DEV = \
../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \
../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_LIB_DIR); \
if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \
- ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \
- ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \
../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so
../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).so $(PKG_DEVLIB_DIR)/$(LIBNAME).so; \
fi
else
INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC)

View File

@ -1,36 +0,0 @@
--- acl-2.2.32/include/buildmacros.build 2005-12-06 15:33:03.000000000 +0100
+++ acl-2.2.32/include/buildmacros 2005-12-06 15:33:06.000000000 +0100
@@ -54,7 +54,7 @@
$(LFILES:.l=.o) \
$(YFILES:%.y=%.tab.o)
-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
+INSTALL = $(TOPDIR)/install-sh
SHELL = /bin/sh
IMAGES_DIR = $(TOPDIR)/all-images
--- acl-2.2.32/include/builddefs.in.build 2005-10-07 18:51:14.000000000 +0200
+++ acl-2.2.32/include/builddefs.in 2005-12-06 15:34:20.000000000 +0100
@@ -53,14 +53,14 @@
PKG_VERSION = @pkg_version@
PKG_PLATFORM = @pkg_platform@
PKG_DISTRIBUTION= @pkg_distribution@
-PKG_BIN_DIR = @bindir@
-PKG_SBIN_DIR = @sbindir@
-PKG_LIB_DIR = @libdir@
-PKG_DEVLIB_DIR = @libexecdir@
-PKG_INC_DIR = @includedir@
-PKG_MAN_DIR = @mandir@
-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
-PKG_LOCALE_DIR = @datadir@/locale
+PKG_BIN_DIR = $(DESTDIR)@bindir@
+PKG_SBIN_DIR = $(DESTDIR)@sbindir@
+PKG_LIB_DIR = $(DESTDIR)@libdir@
+PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@
+PKG_INC_DIR = $(DESTDIR)@includedir@
+PKG_MAN_DIR = $(DESTDIR)@mandir@
+PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@-@pkg_version@
+PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale
CC = @cc@
AWK = @awk@

View File

@ -1,6 +1,8 @@
--- acl-2.2.39/include/builddefs.in.build 2006-06-20 02:51:25.000000000 -0400
+++ acl-2.2.39/include/builddefs.in 2006-07-05 12:34:05.000000000 -0400
@@ -26,14 +26,14 @@
diff --git a/include/builddefs.in b/include/builddefs.in
index d054a56..10b0cd4 100644
--- a/include/builddefs.in
+++ b/include/builddefs.in
@@ -28,14 +28,14 @@ PKG_RELEASE = @pkg_release@
PKG_VERSION = @pkg_version@
PKG_PLATFORM = @pkg_platform@
PKG_DISTRIBUTION= @pkg_distribution@
@ -23,14 +25,16 @@
CC = @cc@
AWK = @awk@
--- acl-2.2.39/include/buildmacros.build 2006-07-05 12:32:07.000000000 -0400
+++ acl-2.2.39/include/buildmacros 2006-07-05 12:32:07.000000000 -0400
@@ -26,7 +26,7 @@
diff --git a/include/buildmacros b/include/buildmacros
index 17423c0..3118a17 100644
--- a/include/buildmacros
+++ b/include/buildmacros
@@ -40,7 +40,7 @@ OBJECTS = $(ASFILES:.s=.o) \
$(LFILES:.l=.o) \
$(YFILES:%.y=%.tab.o)
-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
+INSTALL = $(TOPDIR)/install-sh
-INSTALL = $(TOPDIR)/include/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
+INSTALL = $(TOPDIR)/include/install-sh
SHELL = /bin/sh
IMAGES_DIR = $(TOPDIR)/all-images

View File

@ -1,12 +0,0 @@
--- acl-2.2.39/man/man1/getfacl.1 2007-07-26 15:40:16.000000000 +0200
+++ acl-2.2.39mzk/man/man1/getfacl.1 2007-07-26 15:42:24.000000000 +0200
@@ -115,6 +115,9 @@ Use an alternative tabular output format
Do not strip leading slash characters (`/'). The default behavior is to
strip leading slash characters.
.TP
+.I \-n, \-\-numeric
+List numeric user and group IDs
+.TP
.I \-v, \-\-version
Print the version of getfacl and exit.
.TP

File diff suppressed because it is too large Load Diff

View File

@ -1,121 +0,0 @@
diff -urp acl-2.2.39/getfacl/getfacl.c acl-2.2.39mzk/getfacl/getfacl.c
--- acl-2.2.39/getfacl/getfacl.c 2007-07-25 13:12:13.000000000 +0200
+++ acl-2.2.39mzk/getfacl/getfacl.c 2007-07-25 12:51:14.000000000 +0200
@@ -42,7 +42,7 @@
#define POSIXLY_CORRECT_STR "POSIXLY_CORRECT"
#if !POSIXLY_CORRECT
-# define CMD_LINE_OPTIONS "dRLP"
+# define CMD_LINE_OPTIONS "aceEsRLPtpndvh"
#endif
#define POSIXLY_CMD_LINE_OPTIONS "d"
@@ -554,18 +554,18 @@ void help(void)
#if !POSIXLY_CORRECT
} else {
printf(_(
-" --access display the file access control list only\n"
+" -a, --access display the file access control list only\n"
" -d, --default display the default access control list only\n"
-" --omit-header do not display the comment header\n"
-" --all-effective print all effective rights\n"
-" --no-effective print no effective rights\n"
-" --skip-base skip files that only have the base entries\n"
+" -c, --omit-header do not display the comment header\n"
+" -e, --all-effective print all effective rights\n"
+" -E, --no-effective print no effective rights\n"
+" -s, --skip-base skip files that only have the base entries\n"
" -R, --recursive recurse into subdirectories\n"
" -L, --logical logical walk, follow symbolic links\n"
-" -P, --physical physical walk, do not follow symbolic links\n"
-" --tabular use tabular output format\n"
-" --numeric print numeric user/group identifiers\n"
-" --absolute-names don't strip leading '/' in pathnames\n"));
+" -P, --physical physical walk, do not follow symbolic links\n"
+" -t, --tabular use tabular output format\n"
+" -n, --numeric print numeric user/group identifiers\n"
+" -p, --absolute-names don't strip leading '/' in pathnames\n"));
}
#endif
printf(_(
diff -urp acl-2.2.39/man/man1/getfacl.1 acl-2.2.39mzk/man/man1/getfacl.1
--- acl-2.2.39/man/man1/getfacl.1 2006-06-20 08:51:25.000000000 +0200
+++ acl-2.2.39mzk/man/man1/getfacl.1 2007-07-25 13:17:17.000000000 +0200
@@ -12,10 +12,10 @@ getfacl \- get file access control lists
.SH SYNOPSIS
.B getfacl
-[\-dRLPvh] file ...
+[\-aceEsRLPrpndvh] file ...
.B getfacl
-[\-dRLPvh] \-
+[\-aceEsRLPrpndvh] \-
.SH DESCRIPTION
For each file, getfacl displays the file name, owner, the group,
@@ -78,22 +78,22 @@ accessing the file mode.
.SS OPTIONS
.TP 4
-.I \-\-access
+.I \-a, \-\-access
Display the file access control list.
.TP
.I \-d, \-\-default
Display the default access control list.
.TP
-.I \-\-omit-header
+.I \-c, \-\-omit-header
Do not display the comment header (the first three lines of each file's output).
.TP
-.I \-\-all-effective
+.I \-e, \-\-all-effective
Print all effective rights comments, even if identical to the rights defined by the ACL entry.
.TP
-.I \-\-no-effective
+.I \-E, \-\-no-effective
Do not print effective rights comments.
.TP
-.I \-\-skip-base
+.I \-s, \-\-skip-base
Skip files that only have the base ACL entries (owner, group, others).
.TP
.I \-R, \-\-recursive
@@ -108,17 +108,17 @@ subdirectories.
Physical walk, skip all symbolic links. This also skips symbolic link
arguments.
.TP
-.I \-\-tabular
+.I \-t, \-\-tabular
Use an alternative tabular output format. The ACL and the default ACL are displayed side by side. Permissions that are ineffective due to the ACL mask entry are displayed capitalized. The entry tag names for the ACL_USER_OBJ and ACL_GROUP_OBJ entries are also displayed in capital letters, which helps in spotting those entries.
.TP
-.I \-\-absolute-names
+.I \-p, \-\-absolute-names
Do not strip leading slash characters (`/'). The default behavior is to
strip leading slash characters.
.TP
-.I \-\-version
+.I \-v, \-\-version
Print the version of getfacl and exit.
.TP
-.I \-\-help
+.I \-h, \-\-help
Print help explaining the command line options.
.TP
.I \-\-
Only in acl-2.2.39/getfacl: getfacl.c.params
diff -urp acl-2.2.39/man/man1/getfacl.1 acl-2.2.39mzk/man/man1/getfacl.1
--- acl-2.2.39/man/man1/getfacl.1 2007-07-26 15:40:16.000000000 +0200
+++ acl-2.2.39mzk/man/man1/getfacl.1 2007-07-26 15:42:24.000000000 +0200
@@ -115,6 +115,9 @@ Use an alternative tabular output format
Do not strip leading slash characters (`/'). The default behavior is to
strip leading slash characters.
.TP
+.I \-n, \-\-numeric
+List numeric user and group IDs
+.TP
.I \-v, \-\-version
Print the version of getfacl and exit.
.TP
Only in acl-2.2.39/man/man1: getfacl.1.params

View File

@ -1,24 +0,0 @@
--- acl-2.2.39/setfacl/parse.c.path_max 2006-06-20 02:51:25.000000000 -0400
+++ acl-2.2.39/setfacl/parse.c 2006-07-05 15:27:21.000000000 -0400
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -412,7 +413,12 @@
gid_t *gid_p)
{
int c;
- char linebuf[1024];
+ /*
+ Max PATH_MAX bytes even for UTF-8 path names and additional 9
+ bytes for "# file: ".Not a good solution but for now it is the
+ best I can do without too much impact on the code. [tw]
+ */
+ char linebuf[(4*PATH_MAX)+9];
char *cp;
char *p;
int comments_read = 0;

View File

@ -1,11 +0,0 @@
--- acl-2.2.45/setfacl/setfacl.c.segfault 2008-01-28 13:56:36.000000000 +0100
+++ acl-2.2.45/setfacl/setfacl.c 2008-01-28 13:58:08.000000000 +0100
@@ -679,6 +679,8 @@ int main(int argc, char *argv[])
}
}
while (optind < argc) {
+ if(!seq)
+ goto synopsis;
if (seq_empty(seq))
goto synopsis;
saw_files = 1;

View File

@ -1,235 +0,0 @@
--- acl-2.2.39/getfacl/getfacl.c.walk 2006-06-20 08:51:25.000000000 +0200
+++ acl-2.2.39/getfacl/getfacl.c 2007-03-21 10:52:07.000000000 +0100
@@ -34,7 +34,6 @@
#include <dirent.h>
#include <libgen.h>
#include <getopt.h>
-#include <ftw.h>
#include <locale.h>
#include "config.h"
#include "user_group.h"
@@ -70,9 +69,9 @@
const char *progname;
const char *cmd_line_options;
-int opt_recursive; /* recurse into sub-directories? */
-int opt_walk_logical; /* always follow symbolic links */
-int opt_walk_physical; /* never follow symbolic links */
+int opt_recursive = 0; /* recurse into sub-directories? */
+int opt_walk_logical = 0; /* always follow symbolic links */
+int opt_walk_physical = 0; /* never follow symbolic links */
int opt_print_acl = 0;
int opt_print_default_acl = 0;
int opt_strip_leading_slash = 1;
@@ -562,71 +561,140 @@
static int __errors;
-int __do_print(const char *file, const struct stat *stat,
- int flag, struct FTW *ftw)
+
+int walk_tree(const char *file)
{
- int saved_errno = errno;
+ static int level = 0;
+ static int link_count = 0;
+ DIR *dir;
+ struct dirent *entry;
+ struct stat buf;
+ char path[FILENAME_MAX];
+ char path2[FILENAME_MAX];
+ char path3[FILENAME_MAX];
+ char *dir_name;
+ size_t len;
+ ssize_t slen;
+ int res;
/* Process the target of a symbolic link, and traverse the link,
only if doing a logical walk, or if the symbolic link was
specified on the command line. Always skip symbolic links if
doing a physical walk. */
- if (S_ISLNK(stat->st_mode) &&
- (opt_walk_physical || (ftw->level > 0 && !opt_walk_logical)))
+ len = strlen(file);
+ /* check for FILENAME_MAX */
+ if (len >= FILENAME_MAX) {
+ fprintf(stderr, "%s: %s: %s\n", progname, xquote(file),
+ strerror(ENAMETOOLONG));
+ __errors++;
return 0;
+ }
+ /* string ends with '/', remove it and restart */
+ if (len > 1 && file[len-1] == '/') {
+ strncpy(path, file, len);
+ path[len-1] = '\0'; /* overwrite slash */
+ return walk_tree(path);
+ }
- if (do_print(file, stat))
- __errors++;
+ if (level > 0 && !opt_recursive)
+ return 0;
- if (flag == FTW_DNR && opt_recursive) {
- /* Item is a directory which can't be read. */
- fprintf(stderr, "%s: %s: %s\n",
- progname, file, strerror(saved_errno));
+ if (lstat(file, &buf) != 0) {
+ fprintf(stderr, "%s: %s: %s\n", progname, xquote(file),
+ strerror(errno));
+ __errors++;
return 0;
}
- /* We also get here in non-recursive mode. In that case,
- return something != 0 to abort nftw. */
+ if (S_ISLNK(buf.st_mode)) {
+ /* physical means: no links at all */
+ if (opt_walk_physical)
+ return 1;
+
+ /* logical: show information or walk if points to directory
+ * also for symbolic link arguments on level 0 */
+ if (opt_walk_logical || level == 0) {
+ /* copy and append terminating '\0' */
+ strncpy(path2, file, len+1);
+
+ /* get directory name */
+ dir_name = dirname(path2);
+
+ /* get link target */
+ slen = readlink(file, path, FILENAME_MAX-1);
+ if (slen < 0) {
+ fprintf(stderr, "%s: %s: %s\n", progname,
+ xquote(file), strerror(errno));
+ __errors++;
+ return 0;
+ }
+ path[slen] = '\0';
- if (!opt_recursive)
- return 1;
+ if (slen == 0 || path[0] == '/') {
+ /* absolute:
+ * copy and append terminating '\0' */
+ strncpy(path3, path, slen+1);
+ } else
+ /* relative */
+ snprintf(path3, FILENAME_MAX, "%s/%s",
+ dir_name, path);
+
+ if (lstat(path3, &buf) != 0) {
+ fprintf(stderr, "%s: %s: %s\n", progname,
+ xquote(path), strerror(errno));
+ __errors++;
+ return 0;
+ }
- return 0;
-}
+ if ((S_ISDIR(buf.st_mode) && opt_recursive &&
+ link_count < 1) || S_ISLNK(buf.st_mode)) {
+ /* walk directory or follow symlink on level
+ * 0 */
+ link_count++;
+ res = walk_tree(path3);
+ link_count--;
+ if (res != 1)
+ return 0;
+ } else
+ if (do_print(path3, &buf))
+ __errors++;
-char *resolve_symlinks(const char *file)
-{
- static char buffer[4096];
- char *path = NULL;
- ssize_t len;
-
- len = readlink(file, buffer, sizeof(buffer)-1);
- if (len < 0) {
- if (errno == EINVAL) /* not a symlink, use given path */
- path = (char *)file;
- } else {
- buffer[len+1] = '\0';
- path = buffer;
+ return 1;
+ }
}
- return path;
-}
-
-int walk_tree(const char *file)
-{
- const char *p;
- __errors = 0;
- if ((p = resolve_symlinks(file)) == NULL) {
- fprintf(stderr, "%s: %s: %s\n", progname,
- xquote(file), strerror(errno));
- __errors++;
- } else if (nftw(p, __do_print, 0, opt_walk_logical? 0 : FTW_PHYS) < 0) {
- fprintf(stderr, "%s: %s: %s\n", progname, xquote(file),
- strerror(errno));
+ if (do_print(file, &buf))
__errors++;
+
+ /* it is a directory, walk */
+ if (S_ISDIR(buf.st_mode)) {
+ dir = opendir(file);
+ if (!dir) {
+ fprintf(stderr, "%s: %s: %s\n", progname,
+ xquote(file), strerror(errno));
+ __errors++;
+ return 0;
+ }
+
+ level++;
+ while ((entry = readdir(dir)) != NULL) {
+ if (! strcmp(entry->d_name, ".") ||
+ ! strcmp(entry->d_name, ".."))
+ continue;
+
+ snprintf(path, FILENAME_MAX, "%s/%s", file,
+ entry->d_name);
+
+ /* ignore result, walk every entry */
+ res = walk_tree(path);
+ }
+ level--;
+
+ closedir(dir);
}
- return __errors;
+
+ return 1;
}
int main(int argc, char *argv[])
@@ -762,15 +830,22 @@
if (*line == '\0')
continue;
- had_errors += walk_tree(line);
+ /* ignore result of walk_tree, use __errors */
+ __errors = 0;
+ walk_tree(line);
+ had_errors += __errors;
}
if (!feof(stdin)) {
fprintf(stderr, _("%s: Standard input: %s\n"),
progname, strerror(errno));
had_errors++;
}
- } else
- had_errors += walk_tree(argv[optind]);
+ } else {
+ /* ignore result of walk_tree, use __errors */
+ __errors = 0;
+ walk_tree(argv[optind]);
+ had_errors += __errors;
+ }
optind++;
} while (optind < argc);

View File

@ -1,27 +0,0 @@
--- acl-2.2.45/setfacl/setfacl.c.old 2007-11-08 14:04:42.000000000 +0100
+++ acl-2.2.45/setfacl/setfacl.c 2007-11-08 14:05:43.000000000 +0100
@@ -144,7 +144,7 @@ restore(
if (error < 0)
goto fail;
if (error == 0)
- return 0;
+ return status;
if (path_p == NULL) {
if (filename) {
@@ -158,6 +158,7 @@ restore(
"aborting\n"),
progname, backup_line);
}
+ status = 1;
goto getout;
}
@@ -176,6 +177,7 @@ restore(
fprintf(stderr, _("%s: %s: %s in line %d\n"),
progname, xquote(filename), strerror(errno),
line);
+ status = 1;
goto getout;
}

View File

@ -1,154 +0,0 @@
--- acl-2.2.47_old/getfacl/getfacl.c 2008-02-07 04:39:57.000000000 +0100
+++ acl-2.2.47/getfacl/getfacl.c 2008-07-31 12:23:10.000000000 +0200
@@ -43,7 +43,7 @@
#define POSIXLY_CORRECT_STR "POSIXLY_CORRECT"
#if !POSIXLY_CORRECT
-# define CMD_LINE_OPTIONS "dRLP"
+# define CMD_LINE_OPTIONS "aceEsRLPtpndvh"
#endif
#define POSIXLY_CMD_LINE_OPTIONS "d"
@@ -555,23 +555,23 @@ void help(void)
#if !POSIXLY_CORRECT
} else {
printf(_(
-" --access display the file access control list only\n"
+" -a, --access display the file access control list only\n"
" -d, --default display the default access control list only\n"
-" --omit-header do not display the comment header\n"
-" --all-effective print all effective rights\n"
-" --no-effective print no effective rights\n"
-" --skip-base skip files that only have the base entries\n"
+" -c, --omit-header do not display the comment header\n"
+" -e, --all-effective print all effective rights\n"
+" -E, --no-effective print no effective rights\n"
+" -s, --skip-base skip files that only have the base entries\n"
" -R, --recursive recurse into subdirectories\n"
" -L, --logical logical walk, follow symbolic links\n"
" -P, --physical physical walk, do not follow symbolic links\n"
-" --tabular use tabular output format\n"
-" --numeric print numeric user/group identifiers\n"
-" --absolute-names don't strip leading '/' in pathnames\n"));
+" -t, --tabular use tabular output format\n"
+" -n, --numeric print numeric user/group identifiers\n"
+" -p, --absolute-names don't strip leading '/' in pathnames\n"));
}
#endif
printf(_(
-" --version print version and exit\n"
-" --help this help text\n"));
+" -v, --version print version and exit\n"
+" -h, --help this help text\n"));
}
int main(int argc, char *argv[])
--- acl-2.2.47_old/man/man1/getfacl.1 2008-02-07 04:39:57.000000000 +0100
+++ acl-2.2.47/man/man1/getfacl.1 2008-07-31 11:23:45.000000000 +0200
@@ -12,10 +12,10 @@ getfacl \- get file access control lists
.SH SYNOPSIS
.B getfacl
-[\-dRLPvh] file ...
+[\-aceEsRLPrpndvh] file ...
.B getfacl
-[\-dRLPvh] \-
+[\-aceEsRLPrpndvh] \-
.SH DESCRIPTION
For each file, getfacl displays the file name, owner, the group,
@@ -78,22 +78,22 @@ accessing the file mode.
.SS OPTIONS
.TP 4
-.I \-\-access
+.I \-a, \-\-access
Display the file access control list.
.TP
.I \-d, \-\-default
Display the default access control list.
.TP
-.I \-\-omit-header
+.I \-c, \-\-omit-header
Do not display the comment header (the first three lines of each file's output).
.TP
-.I \-\-all-effective
+.I \-e, \-\-all-effective
Print all effective rights comments, even if identical to the rights defined by the ACL entry.
.TP
-.I \-\-no-effective
+.I \-E, \-\-no-effective
Do not print effective rights comments.
.TP
-.I \-\-skip-base
+.I \-s, \-\-skip-base
Skip files that only have the base ACL entries (owner, group, others).
.TP
.I \-R, \-\-recursive
@@ -109,17 +109,20 @@ Physical walk, do not follow symbolic li
link arguments.
Only effective in combination with \-R.
.TP
-.I \-\-tabular
+.I \-t, \-\-tabular
Use an alternative tabular output format. The ACL and the default ACL are displayed side by side. Permissions that are ineffective due to the ACL mask entry are displayed capitalized. The entry tag names for the ACL_USER_OBJ and ACL_GROUP_OBJ entries are also displayed in capital letters, which helps in spotting those entries.
.TP
-.I \-\-absolute-names
+.I \-p, \-\-absolute-names
Do not strip leading slash characters (`/'). The default behavior is to
strip leading slash characters.
.TP
-.I \-\-version
+.I \-n, \-\-numeric
+List numeric user and group IDs
+.TP
+.I \-v, \-\-version
Print the version of getfacl and exit.
.TP
-.I \-\-help
+.I \-h, \-\-help
Print help explaining the command line options.
.TP
.I \-\-
--- acl-2.2.47_old/man/man1/setfacl.1 2008-02-07 04:39:57.000000000 +0100
+++ acl-2.2.47/man/man1/setfacl.1 2008-07-31 13:53:29.000000000 +0200
@@ -115,10 +115,10 @@ This also skips symbolic link arguments.
Only effective in combination with \-R.
This option cannot be mixed with `\-\-restore'.
.TP 4
-.I \-\-version
+.I \-v, \-\-version
Print the version of setfacl and exit.
.TP 4
-.I \-\-help
+.I \-h, \-\-help
Print help explaining the command line options.
.TP 4
.I \-\-
--- acl-2.2.47_old/setfacl/setfacl.c 2008-07-31 11:23:18.000000000 +0200
+++ acl-2.2.47/setfacl/setfacl.c 2008-07-31 12:23:13.000000000 +0200
@@ -42,10 +42,10 @@ extern int do_set(const char *path_p, co
/* '-' stands for `process non-option arguments in loop' */
#if !POSIXLY_CORRECT
-# define CMD_LINE_OPTIONS "-:bkndm:M:x:X:RLP"
+# define CMD_LINE_OPTIONS "-:bkndvhm:M:x:X:RLP"
# define CMD_LINE_SPEC "[-bkndRLP] { -m|-M|-x|-X ... } file ..."
#endif
-#define POSIXLY_CMD_LINE_OPTIONS "-:bkndm:M:x:X:"
+#define POSIXLY_CMD_LINE_OPTIONS "-:bkndvhm:M:x:X:"
#define POSIXLY_CMD_LINE_SPEC "[-bknd] {-m|-M|-x|-X ... } file ..."
struct option long_options[] = {
@@ -265,8 +265,8 @@ void help(void)
}
#endif
printf(_(
-" --version print version and exit\n"
-" --help this help text\n"));
+" -v, --version print version and exit\n"
+" -h, --help this help text\n"));
}

View File

@ -0,0 +1,27 @@
diff --git a/setfacl/setfacl.c b/setfacl/setfacl.c
index be34e69..db9976f 100644
--- a/setfacl/setfacl.c
+++ b/setfacl/setfacl.c
@@ -125,7 +125,7 @@ restore(
uid_t uid;
gid_t gid;
mode_t mask, flags;
- struct do_set_args args;
+ struct do_set_args args = { 0 };
int line = 0, backup_line;
int error, status = 0;
diff --git a/test/misc.test b/test/misc.test
index 7c62c64..8c885a8 100644
--- a/test/misc.test
+++ b/test/misc.test
@@ -424,3 +424,9 @@ Now, chmod should change the group_obj entry
>
$ rmdir d
+
+Malformed restore file
+
+ $ echo "# owner: root" > f
+ $ setfacl --restore=f 2>&1
+ >setfacl: f: No filename found in line 0, aborting

View File

@ -0,0 +1,30 @@
diff --git a/setfacl/setfacl.c b/setfacl/setfacl.c
index 091b9cc..be34e69 100644
--- a/setfacl/setfacl.c
+++ b/setfacl/setfacl.c
@@ -76,7 +76,7 @@ struct option long_options[] = {
const char *progname;
const char *cmd_line_options, *cmd_line_spec;
-int walk_flags = WALK_TREE_DEREFERENCE;
+int walk_flags = WALK_TREE_DEREFERENCE_TOPLEVEL;
int opt_recalculate; /* recalculate mask entry (0=default, 1=yes, -1=no) */
int opt_promote; /* promote access ACL to default ACL */
int opt_test; /* do not write to the file system.
@@ -580,13 +580,14 @@ int main(int argc, char *argv[])
break;
case 'L': /* follow symlinks */
- walk_flags |= WALK_TREE_LOGICAL;
+ walk_flags |= WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE;
walk_flags &= ~WALK_TREE_PHYSICAL;
break;
case 'P': /* do not follow symlinks */
walk_flags |= WALK_TREE_PHYSICAL;
- walk_flags &= ~WALK_TREE_LOGICAL;
+ walk_flags &= ~(WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE |
+ WALK_TREE_DEREFERENCE_TOPLEVEL);
break;
case 't': /* test mode */

View File

@ -1,17 +1,15 @@
Summary: Access control list utilities
Name: acl
Version: 2.2.47
Release: 4%{?dist}
Version: 2.2.49
Release: 3%{?dist}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libattr-devel >= 2.4.1
BuildRequires: autoconf, libtool >= 1.5, gettext, gawk
Source: ftp://oss.sgi.com/projects/xfs/cmd_tars/acl_%{version}-1.tar.gz
Source: http://download.savannah.gnu.org/releases-noredirect/acl/acl-%{version}.src.tar.gz
Patch0: acl-2.2.3-multilib.patch
Patch1: acl-2.2.39-build.patch
Patch2: acl-2.2.39-path_max.patch
Patch3: acl-2.2.47-params.patch
Patch4: acl-2.2.45-exitcode.patch
Patch5: acl-2.2.39-segfault.patch
Patch2: acl-2.2.49-setfacl-walk.patch
Patch3: acl-2.2.49-setfacl-restore.patch
License: GPLv2+
Group: System Environment/Base
URL: http://oss.sgi.com/projects/xfs/
@ -46,12 +44,10 @@ defined in POSIX 1003.1e draft standard 17.
%prep
%setup -q
%patch0 -p1 -b .multilib
%patch1 -p1 -b .build
%patch2 -p1 -b .path_max
%patch3 -p1 -b .params
%patch4 -p1 -b .exitcode
%patch5 -p1 -b .segfault
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
autoconf
%build
@ -84,7 +80,7 @@ rm -rf $RPM_BUILD_ROOT
%postun -n libacl -p /sbin/ldconfig
%files -f %{name}.lang
%defattr(-,root,root)
%defattr(-,root,root,-)
%{_bindir}/chacl
%{_bindir}/getfacl
%{_bindir}/setfacl
@ -95,7 +91,7 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man5/acl.5*
%files -n libacl-devel
%defattr(-,root,root)
%defattr(-,root,root,-)
/%{_lib}/libacl.so
%{_includedir}/acl
%{_includedir}/sys/acl.h
@ -103,10 +99,20 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man3/acl_*
%files -n libacl
%defattr(-,root,root)
%defattr(-,root,root,-)
/%{_lib}/libacl.so.*
%changelog
* Wed Mar 24 2010 Kamil Dudka <kdudka@redhat.com> 2.2.49-3
- prevent setfacl --restore from SIGSEGV on malformed restore file (#576550)
* Sat Dec 26 2009 Kamil Dudka <kdudka@redhat.com> 2.2.49-2
- tweaked setfacl tree walk flags (#488674), thanks to Markus Steinborn
* Sun Dec 20 2009 Kamil Dudka <kdudka@redhat.com> 2.2.49-1
- new upstream bugfix release
- big cleanup in patches
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.47-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

View File

@ -1 +1 @@
a11e4571a54a0b1ae83010d1e68a64c2 acl_2.2.47-1.tar.gz
181445894cca986da9ae0099d5ce2d08 acl-2.2.49.src.tar.gz