From 7c17e7ced296d90871e97f75ac626eb4910f5a05 Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 9 Jun 2006 16:09:26 +0000 Subject: Copy filename read from the stdin into the private buffer. Otherwise, next read filename overwrite previous one, resulting in acl being applied only to the last name in the list. Submitted by: Oleg Lomaka MFC after: 1 week Approved by: kan (mentor) --- bin/setfacl/setfacl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/setfacl/setfacl.c b/bin/setfacl/setfacl.c index e04feac..43a5545 100644 --- a/bin/setfacl/setfacl.c +++ b/bin/setfacl/setfacl.c @@ -109,6 +109,7 @@ main(int argc, char *argv[]) int local_error, carried_error, ch, i; struct sf_file *file; struct sf_entry *entry; + const char *fn_dup; acl_type = ACL_TYPE_ACCESS; carried_error = local_error = 0; @@ -187,7 +188,10 @@ main(int argc, char *argv[]) while (fgets(filename, (int)sizeof(filename), stdin)) { /* remove the \n */ filename[strlen(filename) - 1] = '\0'; - add_filename(filename); + fn_dup = strdup(filename); + if (fn_dup == NULL) + err(1, "strdup() failed"); + add_filename(fn_dup); } } else for (i = 0; i < argc; i++) -- cgit v1.1