version 1.2, 2021/03/09 14:48:42 |
version 1.9, 2021/04/02 12:19:39 |
|
|
/* dgamelaunch.c |
/* dgamelaunch.c |
* |
* |
|
* (c)2021 Rubén Llorente <porting@use.startmail.com> |
* (c)2001-4 M. Drew Streib <dtype@dtype.org> |
* (c)2001-4 M. Drew Streib <dtype@dtype.org> |
* also parts (c) 2003-4 Joshua Kwan <joshk@triplehelix.org>, |
* also parts (c) 2003-4 Joshua Kwan <joshk@triplehelix.org>, |
* Brett Carrington <brettcar@segvio.org>, |
* Brett Carrington <brettcar@segvio.org>, |
Line 1559 changepw (int dowrite) |
|
Line 1560 changepw (int dowrite) |
|
#if defined(__OpenBSD__) |
#if defined(__OpenBSD__) |
me->password = (char *) malloc((_PASSWORD_LEN+1)*sizeof(char)); |
me->password = (char *) malloc((_PASSWORD_LEN+1)*sizeof(char)); |
if ( crypt_newhash(buf, "blowfish,12", me->password, _PASSWORD_LEN) != 0) |
if ( crypt_newhash(buf, "blowfish,12", me->password, _PASSWORD_LEN) != 0) |
graceful_exit(1); |
graceful_exit(300); |
#else |
#else |
me->password = strdup (crypt (buf, buf)); |
me->password = strdup (crypt (buf, buf)); |
#endif |
#endif |
Line 2162 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 2864 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 2882 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) { |