xref: /plan9/sys/src/cmd/auth/lib/okpasswd.c (revision 5979f96214a33481f1724725761f2ef3585d2237)
1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <authsrv.h>
4*5979f962SDavid du Colombier #include <bio.h>
59a747e4fSDavid du Colombier #include "authcmdlib.h"
6219b2ee8SDavid du Colombier 
7219b2ee8SDavid du Colombier char *trivial[] = {
8219b2ee8SDavid du Colombier 	"login",
9219b2ee8SDavid du Colombier 	"guest",
10219b2ee8SDavid du Colombier 	"change me",
11219b2ee8SDavid du Colombier 	"passwd",
12219b2ee8SDavid du Colombier 	"no passwd",
13219b2ee8SDavid du Colombier 	"anonymous",
14219b2ee8SDavid du Colombier 	0
15219b2ee8SDavid du Colombier };
16219b2ee8SDavid du Colombier 
17219b2ee8SDavid du Colombier char*
okpasswd(char * p)18219b2ee8SDavid du Colombier okpasswd(char *p)
19219b2ee8SDavid du Colombier {
209a747e4fSDavid du Colombier 	char passwd[ANAMELEN];
219a747e4fSDavid du Colombier 	char back[ANAMELEN];
22219b2ee8SDavid du Colombier 	int i, n;
23219b2ee8SDavid du Colombier 
24219b2ee8SDavid du Colombier 	strncpy(passwd, p, sizeof passwd - 1);
25219b2ee8SDavid du Colombier 	passwd[sizeof passwd - 1] = '\0';
26219b2ee8SDavid du Colombier 	n = strlen(passwd);
27219b2ee8SDavid du Colombier 	while(passwd[n - 1] == ' ')
28219b2ee8SDavid du Colombier 		n--;
29219b2ee8SDavid du Colombier 	passwd[n] = '\0';
30219b2ee8SDavid du Colombier 	for(i = 0; i < n; i++)
31219b2ee8SDavid du Colombier 		back[i] = passwd[n - 1 - i];
32219b2ee8SDavid du Colombier 	back[n] = '\0';
33219b2ee8SDavid du Colombier 	if(n < 8)
34219b2ee8SDavid du Colombier 		return "password must be at least 8 chars";
35219b2ee8SDavid du Colombier 
36219b2ee8SDavid du Colombier 	for(i = 0; trivial[i]; i++)
37219b2ee8SDavid du Colombier 		if(strcmp(passwd, trivial[i]) == 0
38219b2ee8SDavid du Colombier 		|| strcmp(back, trivial[i]) == 0)
39219b2ee8SDavid du Colombier 			return "trivial password";
40219b2ee8SDavid du Colombier 
41219b2ee8SDavid du Colombier 	return 0;
42219b2ee8SDavid du Colombier }
43