Updated execute calls

This commit is contained in:
Michiel Broek
2004-03-02 20:47:23 +00:00
parent fb1767f5a6
commit e20f1d3f39
30 changed files with 420 additions and 202 deletions

View File

@@ -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();
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -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));

View File

@@ -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)