From 410572a159fa2625dd6eef80e8f3727b76700290 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 9 Jun 2006 16:09:26 +0000 Subject: [PATCH] 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(-) diff --git a/bin/setfacl/setfacl.c b/bin/setfacl/setfacl.c index e04feac2e92b..43a55459e0b9 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++)