diff --git a/dgamelaunch.c b/dgamelaunch.c index acd1361..128047a 100644 --- a/dgamelaunch.c +++ b/dgamelaunch.c @@ -440,7 +440,7 @@ inprogressmenu () /* ************************************************************* */ -void +int changepw () { char buf[21]; @@ -480,7 +480,7 @@ changepw () echo (); /* Putting echo back on just for safety and because it can't hurt. */ if (buf && *buf == '\0') - return; + return 0; if (strchr (buf, ':') != NULL) graceful_exit (112); @@ -500,6 +500,8 @@ changepw () me->password = strdup (crypt (buf, buf)); writefile (0); + + return 1; } /* ************************************************************* */ @@ -781,7 +783,7 @@ newuser () for (i = 0; i < strlen (buf); i++) { - if (!isalnum(buf)) + if (!isalnum(buf[i])) error = 1; } @@ -798,7 +800,12 @@ newuser () clear (); - changepw (); /* Calling changepw instead to prompt twice. */ + if (!changepw ()) /* Calling changepw instead to prompt twice. */ + { + free(me); + me = NULL; + return; + } /* email step */ diff --git a/dgamelaunch.h b/dgamelaunch.h index 20dd3ad..b1eac56 100644 --- a/dgamelaunch.h +++ b/dgamelaunch.h @@ -57,7 +57,7 @@ extern void loadbanner (struct dg_banner *ban); extern void drawbanner (unsigned int start_line, unsigned int howmany); extern struct dg_game **populate_games (int *l); extern void inprogressmenu (void); -extern void changepw (void); +extern int changepw (void); extern void domailuser (char *username); extern void drawmenu (void); extern void freefile (void);