Package: acl
Version: 2.2.26-1
Severity: normal
Tags: patch

Dear Nathan

getfacl uses a string of length _POSIX_PATH_MAX (256 characters) when 
reading in filenames via stdin (e.g. 'echo <filename> | getfacl -'). 
Therefore filenames (including path) longer than that fail. The linux kernel 
headers define PATH_MAX in /usr/include/linux/limits.h to be 4096 characters.
So files (including paths) may exist up to that length on a linux system.

If one provides the filename as an argument (getfacl <filename>) the above
limitation does not exist (which is also inconsistent).

It would be great if getfacl could be changed to accept filenames up to 
the maximum length supported by linux, i.e. PATH_MAX (4096 characters).

I attach a little patch that implements this.

To give you a little bit of background, I'm the co-maintainer of the 
mondo package. A user has raised an issue with getfacl not working for 
some of his files on the mondorescue mailing list which I have tracked 
down to the above issue.

Best regards & thanks a lot
Andree

PS: There may be reasons why this absolutely has to be _POSIX_PATH_MAX 
which I'm not aware of. I have searched Google but may have overlooked 
something. If so, I would be very grateful for an explanation.

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.10-1-k7
Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1)

Versions of packages acl depends on:
ii  libacl1                     2.2.26-1     Access control list shared library
ii  libattr1                    2.4.18-1     Extended attribute shared library
ii  libc6                       2.3.2.ds1-20 GNU C Library: Shared libraries an

-- no debconf information
--- getfacl.c.orig	2005-01-30 21:14:43.000000000 +1100
+++ getfacl.c	2005-01-30 21:14:57.000000000 +1100
@@ -607,7 +607,7 @@
 
 char *next_line(FILE *file)
 {
-	static char line[_POSIX_PATH_MAX], *c;
+	static char line[PATH_MAX], *c;
 	if (!fgets(line, sizeof(line), file))
 		return NULL;
 

Reply via email to