Kamil Dudka 5293f3
From fb071c302b8cad8837bc1e57407dc3ffa14d3f99 Mon Sep 17 00:00:00 2001
Kamil Dudka 5293f3
From: Kamil Dudka <kdudka@redhat.com>
Kamil Dudka 5293f3
Date: Thu, 31 Oct 2013 19:24:35 +0100
Kamil Dudka 5293f3
Subject: [PATCH] libacl: fix SIGSEGV of getfacl -e on overly long group name
Kamil Dudka 5293f3
Kamil Dudka 5293f3
We simply make sure that at least one tab is used for indentation.
Kamil Dudka 5293f3
---
Kamil Dudka 5293f3
 libacl/__acl_to_any_text.c |    5 +++++
Kamil Dudka 5293f3
 test/root/getfacl.test     |   17 +++++++++++++++++
Kamil Dudka 5293f3
 2 files changed, 22 insertions(+), 0 deletions(-)
Kamil Dudka 5293f3
 create mode 100644 test/root/getfacl.test
Kamil Dudka 5293f3
Kamil Dudka 5293f3
diff --git a/libacl/__acl_to_any_text.c b/libacl/__acl_to_any_text.c
Kamil Dudka 5293f3
index a4f9c34..1d10e81 100644
Kamil Dudka 5293f3
--- a/libacl/__acl_to_any_text.c
Kamil Dudka 5293f3
+++ b/libacl/__acl_to_any_text.c
Kamil Dudka 5293f3
@@ -247,6 +247,11 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char *text_p, ssize_t size,
Kamil Dudka 5293f3
 		    options & TEXT_ALL_EFFECTIVE) {
Kamil Dudka 5293f3
 			x = (options & TEXT_SMART_INDENT) ?
Kamil Dudka 5293f3
 				((text_p - orig_text_p)/8) : TABS-1;
Kamil Dudka 5293f3
+
Kamil Dudka 5293f3
+			/* use at least one tab for indentation */
Kamil Dudka 5293f3
+			if (x > (TABS-1))
Kamil Dudka 5293f3
+				x = (TABS-1);
Kamil Dudka 5293f3
+
Kamil Dudka 5293f3
 			strncpy(text_p, tabs+x, size);
Kamil Dudka 5293f3
 			ADVANCE(TABS-x);
Kamil Dudka 5293f3
 
Kamil Dudka 5293f3
diff --git a/test/root/getfacl.test b/test/root/getfacl.test
Kamil Dudka 5293f3
new file mode 100644
Kamil Dudka 5293f3
index 0000000..f84e25d
Kamil Dudka 5293f3
--- /dev/null
Kamil Dudka 5293f3
+++ b/test/root/getfacl.test
Kamil Dudka 5293f3
@@ -0,0 +1,17 @@
Kamil Dudka 5293f3
+Make sure that getfacl always adds at least one space between the permissions
Kamil Dudka 5293f3
+in an acl entry and the effective permissions comment.
Kamil Dudka 5293f3
+
Kamil Dudka 5293f3
+	$ umask 022
Kamil Dudka 5293f3
+	$ mkdir d
Kamil Dudka 5293f3
+	$ groupadd loooooooooooooooooooooooonggroup
Kamil Dudka 5293f3
+	$ setfacl -dm group:loooooooooooooooooooooooonggroup:rwx d
Kamil Dudka 5293f3
+	$ getfacl -cde d
Kamil Dudka 5293f3
+	> user::rwx
Kamil Dudka 5293f3
+	> group::r-x	#effective:r-x
Kamil Dudka 5293f3
+	> group:loooooooooooooooooooooooonggroup:rwx	#effective:rwx
Kamil Dudka 5293f3
+	> mask::rwx
Kamil Dudka 5293f3
+	> other::r-x
Kamil Dudka 5293f3
+	>
Kamil Dudka 5293f3
+
Kamil Dudka 5293f3
+	$ groupdel loooooooooooooooooooooooonggroup
Kamil Dudka 5293f3
+	$ rm -r d
Kamil Dudka 5293f3
-- 
Kamil Dudka 5293f3
1.7.1
Kamil Dudka 5293f3