diff options
author | kib <kib@FreeBSD.org> | 2006-06-09 16:09:26 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2006-06-09 16:09:26 +0000 |
commit | 7c17e7ced296d90871e97f75ac626eb4910f5a05 (patch) | |
tree | 48e980e98ccf5b2e538ff31b212cbe5b9078b460 /bin/setfacl | |
parent | 7b9c5e1df6503fe2de55b89754f8cf3cf2a1735a (diff) | |
download | FreeBSD-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)
Diffstat (limited to 'bin/setfacl')
-rw-r--r-- | bin/setfacl/setfacl.c | 6 |
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++) |