File null-pointer-access.diff of Package acl

From: Andreas Gruenbacher <agruen@suse.de>
Subject: Fix NULL pointer access / segmentation fault

When invoked as ``setfacl -- ...'', setfacl segfaults. Reported
by Jiri Moskovcak <jmoskovc@redhat.com> and
Peng Haitao <penght@cn.fujitsu.com>.

This fix is based on their proposed patch.

Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Cc: Jiri Moskovcak <jmoskovc@redhat.com>
Cc: Peng Haitao <penght@cn.fujitsu.com>

Index: acl-2.2.45/setfacl/setfacl.c
===================================================================
--- acl-2.2.45.orig/setfacl/setfacl.c
+++ acl-2.2.45/setfacl/setfacl.c
@@ -301,7 +301,7 @@ int main(int argc, char *argv[])
 	int which;
 	int lineno;
 	int error;
-	seq_t seq = NULL;
+	seq_t seq;
 	int seq_cmd, parse_mode;
 	
 	progname = basename(argv[0]);
@@ -326,6 +326,10 @@ int main(int argc, char *argv[])
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 
+	seq = seq_init();
+	if (!seq)
+		ERRNO_ERROR(1);
+
 	while ((opt = getopt_long(argc, argv, cmd_line_options,
 		                  long_options, NULL)) != -1) {
 		/* we remember the two REMOVE_ACL commands of the set
@@ -334,15 +338,12 @@ int main(int argc, char *argv[])
 		cmd_t seq_remove_acl_cmd = NULL;
 
 		if (opt != '\1' && saw_files) {
-			if (seq) {
+			if (seq)
 				seq_free(seq);
-				seq = NULL;
-			}
-			saw_files = 0;
-		}
-		if (seq == NULL) {
-			if (!(seq = seq_init()))
+			seq = seq_init();
+			if (!seq)
 				ERRNO_ERROR(1);
+			saw_files = 0;
 		}
 
 		switch (opt) {
openSUSE Build Service is sponsored by