version 1.4, 2021/03/15 14:49:34 |
version 1.9, 2021/04/02 12:19:39 |
Line 2163 readfile (int nolock) |
|
Line 2163 readfile (int nolock) |
|
b = n; |
b = n; |
|
|
/* pw field */ |
/* pw field */ |
|
/* OpenBSD's implementation stores the password in hashed form. |
|
* crypt_checkpass takes care of validating the hashing so we |
|
* don't have to ensure the password field has a valid length */ |
|
|
while (*b != ':') |
while (*b != ':') |
{ |
{ |
users[f_num]->password[(b - n)] = *b; |
users[f_num]->password[(b - n)] = *b; |
b++; |
b++; |
|
#if !defined(__OpenBSD__) |
if ((b - n) >= DGL_PASSWDLEN) { |
if ((b - n) >= DGL_PASSWDLEN) { |
debug_write("passwd field too long"); |
debug_write("passwd field too long"); |
graceful_exit (102); |
graceful_exit (102); |
} |
} |
|
#endif |
} |
} |
|
|
/* advance to next field */ |
/* advance to next field */ |
Line 2865 main (int argc, char** argv) |
|
Line 2871 main (int argc, char** argv) |
|
graceful_exit (3); |
graceful_exit (3); |
} |
} |
|
|
|
|
|
|
/* shed privs. this is done immediately after chroot. */ |
/* shed privs. this is done immediately after chroot. */ |
if (setgroups (1, &globalconfig.shed_gid) == -1) |
if (setgroups (1, &globalconfig.shed_gid) == -1) |
{ |
{ |
Line 2883 main (int argc, char** argv) |
|
Line 2891 main (int argc, char** argv) |
|
perror ("setuid"); |
perror ("setuid"); |
graceful_exit (6); |
graceful_exit (6); |
} |
} |
|
|
|
#if defined(__OpenBSD__) |
|
if ( pledge("stdio rpath wpath cpath fattr flock " |
|
"tty proc exec ps", NULL )==-1 ) |
|
{ |
|
perror("pledge"); |
|
graceful_exit (301); |
|
} |
|
#endif |
|
|
} |
} |
|
|
if (globalconfig.locale) { |
if (globalconfig.locale) { |