Updated execute calls
This commit is contained in:
135
mbsebbs/change.c
135
mbsebbs/change.c
@@ -142,77 +142,84 @@ int Chg_Language(int NewMode)
|
||||
|
||||
void Chg_Password()
|
||||
{
|
||||
char *temp1, *temp2;
|
||||
char *temp1, *temp2, *args[16];
|
||||
|
||||
temp1 = calloc(PATH_MAX, sizeof(char));
|
||||
temp2 = calloc(PATH_MAX, sizeof(char));
|
||||
temp1 = calloc(PATH_MAX, sizeof(char));
|
||||
temp2 = calloc(PATH_MAX, sizeof(char));
|
||||
|
||||
ReadExitinfo();
|
||||
DisplayFile((char *)"password");
|
||||
ReadExitinfo();
|
||||
DisplayFile((char *)"password");
|
||||
|
||||
Enter(1);
|
||||
/* Old password: */
|
||||
language(15, 0, 120);
|
||||
fflush(stdout);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
Getpass(temp1);
|
||||
Enter(1);
|
||||
/* Old password: */
|
||||
language(15, 0, 120);
|
||||
fflush(stdout);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
Getpass(temp1);
|
||||
|
||||
if (!strcmp(exitinfo.Password, temp1)) {
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
/* New password: */
|
||||
language(9, 0, 121);
|
||||
fflush(stdout);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
Getpass(temp1);
|
||||
if((strlen(temp1)) >= CFG.password_length) {
|
||||
Enter(1);
|
||||
/* Confirm new password: */
|
||||
language(9, 0, 122);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
Getpass(temp2);
|
||||
if(( strcmp(temp1,temp2)) != 0) {
|
||||
/* Passwords do not match! */
|
||||
Enter(2);
|
||||
language(12, 0, 123);
|
||||
Enter(1);
|
||||
} else {
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
colour(12, 0);
|
||||
/* Your password must contain at least %d characters! Try again.*/
|
||||
printf("\n%s%d %s\n\n", (char *) Language(42), CFG.password_length, (char *) Language(43));
|
||||
}
|
||||
}
|
||||
|
||||
Syslog('+', "%s/bin/mbpasswd -n %s ******", getenv("MBSE_ROOT"), exitinfo.Name);
|
||||
sprintf(temp1, "%s/bin/mbpasswd -n %s %s", getenv("MBSE_ROOT"), exitinfo.Name, temp2);
|
||||
if (system(temp1) != 0) {
|
||||
WriteError("Failed to set new Unix password");
|
||||
} else {
|
||||
memset(&exitinfo.Password, 0, sizeof(exitinfo.Password));
|
||||
strcpy(exitinfo.Password, temp2);
|
||||
exitinfo.tLastPwdChange = time(NULL);
|
||||
Enter(1);
|
||||
/* Password Change Successful */
|
||||
language(10, 0, 124);
|
||||
Syslog('+', "User changed his password");
|
||||
WriteExitinfo();
|
||||
}
|
||||
} else {
|
||||
if (!strcmp(exitinfo.Password, temp1)) {
|
||||
while (TRUE) {
|
||||
Enter(1);
|
||||
/* New password: */
|
||||
language(9, 0, 121);
|
||||
fflush(stdout);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
Getpass(temp1);
|
||||
if((strlen(temp1)) >= CFG.password_length) {
|
||||
Enter(1);
|
||||
/* Old password incorrect! */
|
||||
language(12, 0, 125);
|
||||
/* Confirm new password: */
|
||||
language(9, 0, 122);
|
||||
colour(CFG.InputColourF, CFG.InputColourB);
|
||||
fflush(stdout);
|
||||
Getpass(temp2);
|
||||
if(( strcmp(temp1,temp2)) != 0) {
|
||||
/* Passwords do not match! */
|
||||
Enter(2);
|
||||
language(12, 0, 123);
|
||||
Enter(1);
|
||||
} else {
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
colour(12, 0);
|
||||
/* Your password must contain at least %d characters! Try again.*/
|
||||
printf("\n%s%d %s\n\n", (char *) Language(42), CFG.password_length, (char *) Language(43));
|
||||
}
|
||||
}
|
||||
|
||||
free(temp1);
|
||||
free(temp2);
|
||||
Enter(2);
|
||||
Pause();
|
||||
Syslog('+', "%s/bin/mbpasswd -n %s ******", getenv("MBSE_ROOT"), exitinfo.Name);
|
||||
sprintf(temp1, "%s/bin/mbpasswd", getenv("MBSE_ROOT"));
|
||||
memset(args, 0, sizeof(args));
|
||||
args[0] = temp1;
|
||||
args[1] = (char *)"-n";
|
||||
args[2] = exitinfo.Name;
|
||||
args[3] = temp2;
|
||||
args[4] = NULL;
|
||||
|
||||
if (execute(args, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null") != 0) {
|
||||
WriteError("Failed to set new Unix password");
|
||||
} else {
|
||||
memset(&exitinfo.Password, 0, sizeof(exitinfo.Password));
|
||||
strcpy(exitinfo.Password, temp2);
|
||||
exitinfo.tLastPwdChange = time(NULL);
|
||||
Enter(1);
|
||||
/* Password Change Successful */
|
||||
language(10, 0, 124);
|
||||
Syslog('+', "User changed his password");
|
||||
WriteExitinfo();
|
||||
}
|
||||
} else {
|
||||
Enter(1);
|
||||
/* Old password incorrect! */
|
||||
language(12, 0, 125);
|
||||
}
|
||||
|
||||
free(temp1);
|
||||
free(temp2);
|
||||
Enter(2);
|
||||
Pause();
|
||||
}
|
||||
|
||||
|
||||
|
@@ -291,7 +291,7 @@ void ExtDoor(char *Program, int NoDoorsys, int Y2Kdoorsys, int Comport, int NoSu
|
||||
if (NoSuid)
|
||||
rc = exec_nosuid(Program);
|
||||
else
|
||||
rc = execute((char *)"/bin/sh", (char *)"-c", Program, NULL, NULL, NULL);
|
||||
rc = execute_str((char *)"/bin/sh", (char *)"-c", Program, NULL, NULL, NULL);
|
||||
|
||||
Altime(0);
|
||||
alarm_off();
|
||||
|
@@ -181,7 +181,7 @@ void Download(void)
|
||||
Enter(2);
|
||||
OldArea = iAreaNumber;
|
||||
WhosDoingWhat(DOWNLOAD, NULL);
|
||||
system("rm -f ./tag/*");
|
||||
execute_pth((char *)"rm", (char *)"-f ./tag/*", (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
|
||||
if ((tf = fopen("taglist", "r+")) == NULL) {
|
||||
Syslog('+', "Download command but no files marked");
|
||||
@@ -382,7 +382,7 @@ void Download(void)
|
||||
}
|
||||
}
|
||||
if (temp != NULL) {
|
||||
if ((err = execute(sProtDn, temp, NULL, NULL, NULL, NULL))) {
|
||||
if ((err = execute_str(sProtDn, temp, NULL, NULL, NULL, NULL))) {
|
||||
perror("");
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
WriteError("Download error %d, prot: %s", err, sProtDn);
|
||||
@@ -1140,7 +1140,7 @@ int Upload()
|
||||
*/
|
||||
Altime(7200);
|
||||
alarm_set(7190);
|
||||
if ((err = execute(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
if ((err = execute_str(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
/*
|
||||
* Log any errors
|
||||
*/
|
||||
@@ -1309,7 +1309,7 @@ int DownloadDirect(char *Name, int Wait)
|
||||
*/
|
||||
alarm_set(((exitinfo.iTimeLeft + 10) * 60) - 10);
|
||||
Altime((exitinfo.iTimeLeft + 10) * 60);
|
||||
if ((err = execute(sProtDn, symFrom, NULL, NULL, NULL, NULL))) {
|
||||
if ((err = execute_str(sProtDn, symFrom, NULL, NULL, NULL, NULL))) {
|
||||
/*
|
||||
* Only log the error, we might have sent some files
|
||||
* instead of nothing.
|
||||
@@ -1671,7 +1671,7 @@ int Upload_Home()
|
||||
*/
|
||||
Altime(7200);
|
||||
alarm_set(7190);
|
||||
if ((err = execute(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
if ((err = execute_str(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
/*
|
||||
* Log any errors
|
||||
*/
|
||||
@@ -2342,7 +2342,7 @@ void ViewFile(char *name)
|
||||
* display to the user.
|
||||
*/
|
||||
sprintf(temp, "%s/%s/temptxt", CFG.bbs_usersdir, exitinfo.Name);
|
||||
rc = execute(archiver.varc, File, NULL, (char *)"/dev/null", temp, (char *)"/dev/null");
|
||||
rc = execute_str(archiver.varc, File, NULL, (char *)"/dev/null", temp, (char *)"/dev/null");
|
||||
Syslog('+', "Display temp file %s", temp);
|
||||
DisplayTextFile(temp);
|
||||
unlink(temp);
|
||||
|
@@ -532,7 +532,7 @@ int ScanDirect(char *fn)
|
||||
fflush(stdout);
|
||||
|
||||
Altime(3600);
|
||||
if ((err = execute(virscan.scanner, virscan.options, temp, (char *)"/dev/null",
|
||||
if ((err = execute_str(virscan.scanner, virscan.options, temp, (char *)"/dev/null",
|
||||
(char *)"/dev/null" , (char *)"/dev/null")) != virscan.error) {
|
||||
WriteError("VIRUS ALERT: Result %d (%s)", err, virscan.comment);
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
@@ -613,9 +613,9 @@ int ScanArchive(char *fn, char *ftype)
|
||||
WriteError("No unarc command available");
|
||||
} else {
|
||||
sprintf(temp, "%s/%s/upl/%s", CFG.bbs_usersdir, exitinfo.Name, fn);
|
||||
if (execute(archiver.funarc, temp, (char *)NULL, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null")) {
|
||||
if (execute_str(archiver.funarc, temp, (char *)NULL, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null")) {
|
||||
WriteError("$Failed %s %s", archiver.funarc, temp);
|
||||
system("rm -f -r ./*");
|
||||
execute_pth((char *)"rm", (char *)"-r -f ./*", (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
chdir(cwd);
|
||||
free(cwd);
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
@@ -643,7 +643,7 @@ int ScanArchive(char *fn, char *ftype)
|
||||
fflush(stdout);
|
||||
|
||||
Altime(3600);
|
||||
err = execute(virscan.scanner, virscan.options, (char *)"*", (char *)"/dev/null",
|
||||
err = execute_str(virscan.scanner, virscan.options, (char *)"*", (char *)"/dev/null",
|
||||
(char *)"/dev/null", (char *)"/dev/null");
|
||||
if (err != virscan.error) {
|
||||
WriteError("VIRUS ALERT: Result %d (%s)", err, virscan.comment);
|
||||
@@ -663,7 +663,7 @@ int ScanArchive(char *fn, char *ftype)
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
system("rm -f -r ./*");
|
||||
execute_pth((char *)"rm", (char *)"-r -f ./*", (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
chdir(cwd);
|
||||
free(cwd);
|
||||
free(temp);
|
||||
@@ -892,9 +892,9 @@ int Addfile(char *File, int AreaNum, int fileid)
|
||||
* get the FILE_ID.DIZ if it exists.
|
||||
*/
|
||||
sprintf(temp, "%s/%s", area.Path, File);
|
||||
if ((err = execute(archiver.iunarc, temp, (char *)"FILE_ID.DIZ", (char *)"/dev/null",
|
||||
if ((err = execute_str(archiver.iunarc, temp, (char *)"FILE_ID.DIZ", (char *)"/dev/null",
|
||||
(char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
if ((err = execute(archiver.iunarc, temp, (char *)"file_id.diz", (char *)"/dev/null",
|
||||
if ((err = execute_str(archiver.iunarc, temp, (char *)"file_id.diz", (char *)"/dev/null",
|
||||
(char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
Syslog('+', "No FILE_ID.DIZ found in %s", File);
|
||||
} else {
|
||||
|
@@ -77,7 +77,7 @@ void die(int onsig)
|
||||
/*
|
||||
* In case the child had the tty in raw mode...
|
||||
*/
|
||||
system("stty sane");
|
||||
execute_pth((char *)"stty", (char *)"sane", (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
}
|
||||
|
||||
signal(onsig, SIG_IGN);
|
||||
@@ -491,14 +491,14 @@ void MakeArc()
|
||||
Nopper();
|
||||
if (!do_quiet)
|
||||
printf("Creating allfiles.zip\n");
|
||||
if (!execute(cmd, (char *)"allfiles.zip allfiles.txt", (char *)NULL, (char *)"/dev/null",
|
||||
if (!execute_str(cmd, (char *)"allfiles.zip allfiles.txt", (char *)NULL, (char *)"/dev/null",
|
||||
(char *)"/dev/null", (char *)"/dev/null") == 0)
|
||||
WriteError("Create allfiles.zip failed");
|
||||
|
||||
Nopper();
|
||||
if (!do_quiet)
|
||||
printf("Creating newfiles.zip\n");
|
||||
if (!execute(cmd, (char *)"newfiles.zip newfiles.txt", (char *)NULL, (char *)"/dev/null",
|
||||
if (!execute_str(cmd, (char *)"newfiles.zip newfiles.txt", (char *)NULL, (char *)"/dev/null",
|
||||
(char *)"/dev/null", (char *)"/dev/null") == 0)
|
||||
WriteError("Create newfiles.zip failed");
|
||||
free(cmd);
|
||||
|
@@ -178,9 +178,7 @@ void UserPack(int days, int level, int pack)
|
||||
long oldsize, curpos;
|
||||
int updated, delete = 0, rc, highest = 0, record = 0, sysop = FALSE;
|
||||
time_t Last;
|
||||
#ifdef _VPOPMAIL_PATH
|
||||
char *cmd;
|
||||
#endif
|
||||
|
||||
fnin = calloc(PATH_MAX, sizeof(char));
|
||||
fnout = calloc(PATH_MAX, sizeof(char));
|
||||
@@ -323,22 +321,26 @@ void UserPack(int days, int level, int pack)
|
||||
WriteError("Cannot delete unix account %s", usr.Name);
|
||||
} else {
|
||||
#ifndef __FreeBSD__
|
||||
rc = execute((char *)"/usr/sbin/userdel ", usr.Name, NULL,
|
||||
rc = execute_str((char *)"/usr/sbin/userdel ", usr.Name, NULL,
|
||||
(char *)"/dev/null",(char *)"/dev/null",(char *)"/dev/null");
|
||||
#else
|
||||
rc = execute((char *)"/usr/sbin/pw userdel ", usr.Name, NULL,
|
||||
rc = execute_str((char *)"/usr/sbin/pw userdel ", usr.Name, NULL,
|
||||
(char *)"/dev/null",(char *)"/dev/null",(char *)"/dev/null");
|
||||
#endif
|
||||
#ifdef _VPOPMAIL_PATH
|
||||
cmd = xstrcpy((char *)_VPOPMAIL_PATH);
|
||||
cmd = xstrcat(cmd, (char *)"/vdeluser ");
|
||||
rc = execute(cmd, usr.Name, NULL,
|
||||
rc = execute_str(cmd, usr.Name, NULL,
|
||||
(char *)"/dev/null",(char *)"/dev/null",(char *)"/dev/null");
|
||||
free(cmd);
|
||||
#endif
|
||||
if (chdir(CFG.bbs_usersdir) == 0)
|
||||
rc = execute((char *)"/bin/rm -Rf ", usr.Name, NULL,
|
||||
if (chdir(CFG.bbs_usersdir) == 0) {
|
||||
cmd = xstrcpy((char *)"-Rf ");
|
||||
cmd = xstrcat(cmd, usr.Name);
|
||||
rc = execute_pth((char *)"rm", cmd,
|
||||
(char *)"/dev/null",(char *)"/dev/null",(char *)"/dev/null");
|
||||
free(cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -598,7 +598,7 @@ void Good_Bye(int onsig)
|
||||
*/
|
||||
char *NameGen(char *FidoName)
|
||||
{
|
||||
char *sUserName;
|
||||
static char *sUserName;
|
||||
|
||||
sUserName = calloc(10, sizeof(char));
|
||||
Syslog('+', "NameGen(%s)", FidoName);
|
||||
@@ -635,34 +635,47 @@ char *NameGen(char *FidoName)
|
||||
*/
|
||||
char *NameCreate(char *Name, char *Comment, char *Password)
|
||||
{
|
||||
char *progname;
|
||||
char *progname, *args[16], *gidstr;
|
||||
int err;
|
||||
|
||||
progname = calloc(PATH_MAX, sizeof(char));
|
||||
gidstr = calloc(10, sizeof(char));
|
||||
memset(args, 0, sizeof(args));
|
||||
|
||||
/*
|
||||
* Call mbuseradd, this is a special setuid root program to create
|
||||
* unix acounts and home directories.
|
||||
*/
|
||||
sprintf(progname, "%s/bin/mbuseradd %d %s \"%s\" %s", getenv("MBSE_ROOT"), getgid(), Name, Comment, CFG.bbs_usersdir);
|
||||
Syslog('+', "%s", progname);
|
||||
sprintf(progname, "%s/bin/mbuseradd", getenv("MBSE_ROOT"));
|
||||
sprintf(gidstr, "%d", getgid());
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
|
||||
if ((err = system(progname))) {
|
||||
perror("");
|
||||
args[0] = progname;
|
||||
args[1] = gidstr;
|
||||
args[2] = Name;
|
||||
args[3] = Comment;
|
||||
args[4] = CFG.bbs_usersdir;
|
||||
args[5] = NULL;
|
||||
|
||||
if ((err = execute(args, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
WriteError("Failed to create unix account");
|
||||
free(progname);
|
||||
free(gidstr);
|
||||
ExitClient(MBERR_GENERAL);
|
||||
}
|
||||
free(gidstr);
|
||||
|
||||
sprintf(progname, "%s/bin/mbpasswd -f %s %s", getenv("MBSE_ROOT"), Name, Password);
|
||||
Syslog('+', "%s/bin/mbpasswd -f %s ******", getenv("MBSE_ROOT"), Name);
|
||||
sprintf(progname, "%s/bin/mbpasswd", getenv("MBSE_ROOT"));
|
||||
memset(args, 0, sizeof(args));
|
||||
args[0] = progname;
|
||||
args[1] = (char *)"-f";
|
||||
args[2] = Name;
|
||||
args[3] = Password;
|
||||
args[4] = NULL;
|
||||
fflush(stdout);
|
||||
fflush(stdin);
|
||||
|
||||
if ((err = system(progname))) {
|
||||
perror("");
|
||||
if ((err = execute(args, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
WriteError("Failed to set unix password");
|
||||
free(progname);
|
||||
ExitClient(MBERR_GENERAL);
|
||||
|
@@ -97,7 +97,7 @@ unsigned long ASCII_PackArea(unsigned long, long);
|
||||
|
||||
void AddArc(char *Temp, char *Pktname)
|
||||
{
|
||||
execute((char *)archiver.marc, Pktname, Temp, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
execute_str((char *)archiver.marc, Pktname, Temp, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
unlink(Temp);
|
||||
printf(".");
|
||||
fflush(stdout);
|
||||
@@ -1097,7 +1097,7 @@ void OLR_Upload(void)
|
||||
*/
|
||||
Altime(7200);
|
||||
alarm_set(7190);
|
||||
if ((err = execute(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
if ((err = execute_str(sProtUp, (char *)"", NULL, NULL, NULL, NULL))) {
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
WriteError("$Upload error %d, prot: %s", err, sProtUp);
|
||||
}
|
||||
@@ -1184,7 +1184,7 @@ void OLR_Upload(void)
|
||||
Syslog('m', "Unarc %s", temp);
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
|
||||
if ((err = execute(archiver.funarc, File, NULL, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
if ((err = execute_str(archiver.funarc, File, NULL, (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null"))) {
|
||||
WriteError("$Failed %s", temp);
|
||||
/* ERROR */
|
||||
printf("%s\n", (char *) Language(217));
|
||||
|
@@ -62,7 +62,7 @@ void die(int onsig)
|
||||
/*
|
||||
* In case the child had the tty in raw mode, reset the tty
|
||||
*/
|
||||
system("stty sane");
|
||||
execute_pth((char *)"stty", (char *)"sane", (char *)"/dev/null", (char *)"/dev/null", (char *)"/dev/null");
|
||||
}
|
||||
|
||||
if (MsgBase.Locked)
|
||||
|
Reference in New Issue
Block a user