Does this only apply to the cdb module? Tren.
> -----Original Message----- > From: Bill Shupp [mailto:[EMAIL PROTECTED]] > Sent: Monday, November 19, 2001 11:38 AM > To: [EMAIL PROTECTED] > Subject: vgetent/vmoduser fixes > > > Ken, > > I discovered that vgetent() wasn't checking for new lines when being > called by vauth_getall() using the cdb module. Then, when vauth_setpw > would add another new line, vmoduser would seg-fault (only when trying > to run it on an entire domain). The patch below adds a check for '\n' > in both the quota and clear passwd fields (the only ones that occur at > the end of the line) to vgetent() in vpopmail.c. > > Also, vmoduser wasn't written to handle crypted passwords correctly (or > clear passwords at all) when running it on an entire domain. It would > set the cryped passwd filed with the clear password, and ignore the > clear password field. It worked correctly only on single email > addresses. The patch below fixes this as well. > > Regards, > > Bill Shupp > > > diff -c ../vpopmail-5.0/vmoduser.c ./vmoduser.c > *** ../vpopmail-5.0/vmoduser.c Mon Oct 8 10:09:12 2001 > --- ./vmoduser.c Mon Nov 19 12:21:17 2001 > *************** > *** 92,98 **** > virgin = 0; > > if ( Gecos[0] != 0 ) mypw->pw_gecos = Gecos; > ! if ( Passwd[0] != 0 ) mypw->pw_passwd = Passwd; > if ( ClearFlags == 1 ) mypw->pw_gid = 0; > if ( GidFlag != 0 ) mypw->pw_gid |= GidFlag; > if ( QuotaFlag == 1 ) mypw->pw_shell = Quota; > --- 92,106 ---- > virgin = 0; > > if ( Gecos[0] != 0 ) mypw->pw_gecos = Gecos; > ! if ( Passwd[0] != 0 ) { > ! mkpasswd3(Passwd,Crypted, 100); > ! mypw->pw_passwd = Crypted; > ! #ifdef CLEAR_PASS > ! mypw->pw_clear_passwd = Passwd; > ! #endif > ! } else if ( Crypted[0] != 0 ) { > ! mypw->pw_passwd = Crypted; > ! } > if ( ClearFlags == 1 ) mypw->pw_gid = 0; > if ( GidFlag != 0 ) mypw->pw_gid |= GidFlag; > if ( QuotaFlag == 1 ) mypw->pw_shell = Quota; > diff -c ../vpopmail-5.0/vpopmail.c ./vpopmail.c > *** ../vpopmail-5.0/vpopmail.c Tue Oct 23 16:28:02 2001 > --- ./vpopmail.c Mon Nov 19 12:20:06 2001 > *************** > *** 1385,1396 **** > *tmpstr = 0; ++tmpstr; > > pwent.pw_shell = tmpstr; > ! while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr; > *tmpstr = 0; ++tmpstr; > > #ifdef CLEAR_PASS > pwent.pw_clear_passwd = tmpstr; > ! while (*tmpstr!=0 && *tmpstr!=':') ++tmpstr; > *tmpstr = 0; ++tmpstr; > #endif > > --- 1385,1396 ---- > *tmpstr = 0; ++tmpstr; > > pwent.pw_shell = tmpstr; > ! while (*tmpstr!=0 && *tmpstr!=':' && *tmpstr!='\n') ++tmpstr; > *tmpstr = 0; ++tmpstr; > > #ifdef CLEAR_PASS > pwent.pw_clear_passwd = tmpstr; > ! while (*tmpstr!=0 && *tmpstr!=':' && *tmpstr!='\n') ++tmpstr; > *tmpstr = 0; ++tmpstr; > #endif > >