summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2006-06-09 16:09:26 +0000
committerkib <kib@FreeBSD.org>2006-06-09 16:09:26 +0000
commit7c17e7ced296d90871e97f75ac626eb4910f5a05 (patch)
tree48e980e98ccf5b2e538ff31b212cbe5b9078b460
parent7b9c5e1df6503fe2de55b89754f8cf3cf2a1735a (diff)
downloadFreeBSD-src-7c17e7ced296d90871e97f75ac626eb4910f5a05.zip
FreeBSD-src-7c17e7ced296d90871e97f75ac626eb4910f5a05.tar.gz
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 <oleg.lomaka at gmail com> MFC after: 1 week Approved by: kan (mentor)
-rw-r--r--bin/setfacl/setfacl.c6
1 files changed, 5 insertions, 1 deletions
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++)
OpenPOWER on IntegriCloud