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