version 1.19, 2003/07/02 21:04:09 |
version 1.20, 2005/04/11 07:13:03 |
|
|
int |
int |
pw_yp(struct passwd *pw, uid_t uid) |
pw_yp(struct passwd *pw, uid_t uid) |
{ |
{ |
char buf[11], *master, *p; |
char uidbuf[20], gidbuf[20], *master, *p; |
int r, rpcport, status, alen; |
int r, rpcport, status, alen; |
struct yppasswd yppasswd; |
struct yppasswd yppasswd; |
struct timeval tv; |
struct timeval tv; |
|
|
for (alen = 0, p = pw->pw_gecos; *p; p++) |
for (alen = 0, p = pw->pw_gecos; *p; p++) |
if (*p == '&') |
if (*p == '&') |
alen = alen + strlen(pw->pw_name) - 1; |
alen = alen + strlen(pw->pw_name) - 1; |
|
(void)snprintf(uidbuf, sizeof uidbuf, "%u", pw->pw_uid); |
|
(void)snprintf(gidbuf, sizeof gidbuf, "%u", pw->pw_gid); |
|
|
if (strlen(pw->pw_name) + 1 + strlen(pw->pw_passwd) + 1 + |
if (strlen(pw->pw_name) + 1 + strlen(pw->pw_passwd) + 1 + |
strlen((snprintf(buf, sizeof buf, "%u", pw->pw_uid), buf)) + 1 + |
strlen(uidbuf) + 1 + strlen(gidbuf) + 1 + |
strlen((snprintf(buf, sizeof buf, "%u", pw->pw_gid), buf)) + 1 + |
|
strlen(pw->pw_gecos) + alen + 1 + strlen(pw->pw_dir) + 1 + |
strlen(pw->pw_gecos) + alen + 1 + strlen(pw->pw_dir) + 1 + |
strlen(pw->pw_shell) >= 1023) { |
strlen(pw->pw_shell) >= 1023) { |
warnx("entries too long"); |
warnx("entries too long"); |