diff options
author | Kamil Dudka <kdudka@redhat.com> | 2013-10-31 19:24:35 +0100 |
---|---|---|
committer | Andreas Gruenbacher <agruen@linbit.com> | 2013-11-01 12:06:01 +0100 |
commit | fb071c302b8cad8837bc1e57407dc3ffa14d3f99 (patch) | |
tree | 66e64bbd453e5f7b7bff5b41cc77517890e1d4f1 /libacl | |
parent | 3f079d4e0512c9a241fb23c56a0421441c83621e (diff) | |
download | acl-fb071c302b8cad8837bc1e57407dc3ffa14d3f99.tar.gz |
libacl: fix SIGSEGV of getfacl -e on overly long group name
We simply make sure that at least one tab is used for indentation.
Diffstat (limited to 'libacl')
-rw-r--r-- | libacl/__acl_to_any_text.c | 5 |
1 files changed, 5 insertions, 0 deletions
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); |