summaryrefslogtreecommitdiffstats
path: root/pw/pw_group.c
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2004-01-11 18:28:08 +0000
committerIan Dowse <iedowse@FreeBSD.org>2004-01-11 18:28:08 +0000
commit7e719aef2bfb501ca96a3993b21219dc67f12ba3 (patch)
tree2711a345c0272033fb62dff8f58acbaf7f7bcaec /pw/pw_group.c
parent35ae70a663e619bff8057347c6b76563b2380a56 (diff)
downloadpw-darwin-7e719aef2bfb501ca96a3993b21219dc67f12ba3.tar.gz
pw-darwin-7e719aef2bfb501ca96a3993b21219dc67f12ba3.tar.zst
pw-darwin-7e719aef2bfb501ca96a3993b21219dc67f12ba3.zip
Add a `-H <fd>' option that is like `-h <fd>', but accepts an already
encrypted password on the specified file descriptor. PR: bin/22033 MFC after: 2 weeks
Diffstat (limited to 'pw/pw_group.c')
-rw-r--r--pw/pw_group.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/pw/pw_group.c b/pw/pw_group.c
index c9af998..1c63a11 100644
--- a/pw/pw_group.c
+++ b/pw/pw_group.c
@@ -158,11 +158,13 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
* software.
*/
- if ((arg = getarg(args, 'h')) != NULL) {
+ if ((arg = getarg(args, 'h')) != NULL ||
+ (arg = getarg(args, 'H')) != NULL) {
if (strcmp(arg->val, "-") == 0)
grp->gr_passwd = "*"; /* No access */
else {
int fd = atoi(arg->val);
+ int precrypt = (arg->ch == 'H');
int b;
int istty = isatty(fd);
struct termios t;
@@ -196,7 +198,12 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
*p = '\0';
if (!*line)
errx(EX_DATAERR, "empty password read on file descriptor %d", fd);
- grp->gr_passwd = pw_pwcrypt(line);
+ if (precrypt) {
+ if (strchr(line, ':') != NULL)
+ return EX_DATAERR;
+ grp->gr_passwd = line;
+ } else
+ grp->gr_passwd = pw_pwcrypt(line);
}
}