Secured sprintf with snprintf

This commit is contained in:
Michiel Broek 2005-08-29 18:33:33 +00:00
parent 5a3a89e645
commit ff2c677d06
5 changed files with 238 additions and 235 deletions

View File

@ -61,7 +61,7 @@ int CountMsgarea(void)
int count, i; int count, i;
struct _sysconnect syscon; struct _sysconnect syscon;
sprintf(ffile, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "r")) == NULL) { if ((fil = fopen(ffile, "r")) == NULL) {
if ((fil = fopen(ffile, "a+")) != NULL) { if ((fil = fopen(ffile, "a+")) != NULL) {
Syslog('+', "Created new %s", ffile); Syslog('+', "Created new %s", ffile);
@ -74,10 +74,10 @@ int CountMsgarea(void)
* Default first message area * Default first message area
*/ */
memset(&msgs, 0, sizeof(msgs)); memset(&msgs, 0, sizeof(msgs));
sprintf(msgs.Name, "Local users chat"); snprintf(msgs.Name, 41, "Local users chat");
sprintf(msgs.Base, "%s/var/mail/local/users", getenv("MBSE_ROOT")); snprintf(msgs.Base, 65, "%s/var/mail/local/users", getenv("MBSE_ROOT"));
sprintf(msgs.QWKname, "LOC_USERS"); snprintf(msgs.QWKname, 21, "LOC_USERS");
sprintf(msgs.Group, "LOCAL"); snprintf(msgs.Group, 13, "LOCAL");
msgs.Active = TRUE; msgs.Active = TRUE;
msgs.Type = LOCALMAIL; msgs.Type = LOCALMAIL;
msgs.MsgKinds = PUBLIC; msgs.MsgKinds = PUBLIC;
@ -101,10 +101,10 @@ int CountMsgarea(void)
* Default message area for badmail * Default message area for badmail
*/ */
memset(&msgs, 0, sizeof(msgs)); memset(&msgs, 0, sizeof(msgs));
sprintf(msgs.Name, "Bad mail"); snprintf(msgs.Name, 41, "Bad mail");
sprintf(msgs.Base, "%s/var/mail/badmail", getenv("MBSE_ROOT")); snprintf(msgs.Base, 65, "%s/var/mail/badmail", getenv("MBSE_ROOT"));
sprintf(msgs.QWKname, "BADMAIL"); snprintf(msgs.QWKname, 21, "BADMAIL");
sprintf(msgs.Group, "LOCAL"); snprintf(msgs.Group, 13, "LOCAL");
msgs.Active = TRUE; msgs.Active = TRUE;
msgs.Type = LOCALMAIL; msgs.Type = LOCALMAIL;
msgs.MsgKinds = PUBLIC; msgs.MsgKinds = PUBLIC;
@ -125,10 +125,10 @@ int CountMsgarea(void)
* Default dupemail message area * Default dupemail message area
*/ */
memset(&msgs, 0, sizeof(msgs)); memset(&msgs, 0, sizeof(msgs));
sprintf(msgs.Name, "Dupe mail"); snprintf(msgs.Name, 41, "Dupe mail");
sprintf(msgs.Base, "%s/var/mail/dupemail", getenv("MBSE_ROOT")); snprintf(msgs.Base, 65, "%s/var/mail/dupemail", getenv("MBSE_ROOT"));
sprintf(msgs.QWKname, "DUPEMAIL"); snprintf(msgs.QWKname, 21, "DUPEMAIL");
sprintf(msgs.Group, "LOCAL"); snprintf(msgs.Group, 13, "LOCAL");
msgs.Active = TRUE; msgs.Active = TRUE;
msgs.Type = LOCALMAIL; msgs.Type = LOCALMAIL;
msgs.MsgKinds = PUBLIC; msgs.MsgKinds = PUBLIC;
@ -186,15 +186,15 @@ int OpenMsgarea(void)
* if they don't have a creation date. All new areas will get the * if they don't have a creation date. All new areas will get the
* right date. * right date.
*/ */
sprintf(fnin, "%s/etc/sysinfo.data", getenv("MBSE_ROOT")); snprintf(fnin, PATH_MAX, "%s/etc/sysinfo.data", getenv("MBSE_ROOT"));
if ((fin = fopen(fnin, "r"))) { if ((fin = fopen(fnin, "r"))) {
fread(&SYSINFO, sizeof(SYSINFO), 1, fin); fread(&SYSINFO, sizeof(SYSINFO), 1, fin);
start = SYSINFO.StartDate; start = SYSINFO.StartDate;
fclose(fin); fclose(fin);
} }
sprintf(fnin, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(fnin, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
sprintf(fnout, "%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(fnout, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
if ((fin = fopen(fnin, "r")) != NULL) { if ((fin = fopen(fnin, "r")) != NULL) {
if ((fout = fopen(fnout, "w")) != NULL) { if ((fout = fopen(fnout, "w")) != NULL) {
MsgUpdated = 0; MsgUpdated = 0;
@ -244,7 +244,7 @@ int OpenMsgarea(void)
msgs.Created = start; msgs.Created = start;
#ifndef USE_NEWSGATE #ifndef USE_NEWSGATE
if ((strlen(msgs.Newsgroup) == 0) && (msgs.Type == ECHOMAIL) && strlen(msgs.Group)) { if ((strlen(msgs.Newsgroup) == 0) && (msgs.Type == ECHOMAIL) && strlen(msgs.Group)) {
sprintf(msgs.Newsgroup, "%s.%s", GetFidoDomain(msgs.Aka.zone), msgs.Tag); snprintf(msgs.Newsgroup, 81, "%s.%s", GetFidoDomain(msgs.Aka.zone), msgs.Tag);
for (i = 0; i < strlen(msgs.Newsgroup); i++) { for (i = 0; i < strlen(msgs.Newsgroup); i++) {
msgs.Newsgroup[i] = tolower(msgs.Newsgroup[i]); msgs.Newsgroup[i] = tolower(msgs.Newsgroup[i]);
if (msgs.Newsgroup[i] == '_') if (msgs.Newsgroup[i] == '_')
@ -292,8 +292,8 @@ void CloseMsgarea(int Force)
{ {
char fin[PATH_MAX], fout[PATH_MAX]; char fin[PATH_MAX], fout[PATH_MAX];
sprintf(fin, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(fin, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
sprintf(fout,"%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
if (MsgUpdated == 1) { if (MsgUpdated == 1) {
if (Force || (yes_no((char *)"Messages database is changed, save changes") == 1)) { if (Force || (yes_no((char *)"Messages database is changed, save changes") == 1)) {
@ -346,7 +346,7 @@ int AppendMsgarea()
struct _sysconnect syscon; struct _sysconnect syscon;
int i; int i;
sprintf(ffile, "%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "a")) != NULL) { if ((fil = fopen(ffile, "a")) != NULL) {
InitMsgRec(); InitMsgRec();
fwrite(&msgs, sizeof(msgs), 1, fil); fwrite(&msgs, sizeof(msgs), 1, fil);
@ -466,10 +466,10 @@ int EditConnections(FILE *fil)
if (System.aka.zone) { if (System.aka.zone) {
set_color(CYAN,BLACK); set_color(CYAN,BLACK);
sprintf(temp, "%3d. %s %s", o+i, status, aka2str(System.aka)); snprintf(temp, 81, "%3d. %s %s", o+i, status, aka2str(System.aka));
} else { } else {
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d.", o+i); snprintf(temp, 81, "%3d.", o+i);
} }
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -563,7 +563,7 @@ long LoadMsgRec(int Area, int work)
sysconnect System; sysconnect System;
int i; int i;
sprintf(mfile, "%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) == NULL) { if ((fil = fopen(mfile, "r")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
@ -609,7 +609,7 @@ int SaveMsgRec(int Area, int work)
if (work) if (work)
working(1, 0, 0); working(1, 0, 0);
sprintf(mfile, "%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r+")) == 0) { if ((fil = fopen(mfile, "r+")) == 0) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
@ -654,21 +654,21 @@ void DeleteRules(char *filename)
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
strcpy(temp, msgs.Tag); strcpy(temp, msgs.Tag);
if (strcasecmp(de->d_name, temp) == 0) { if (strcasecmp(de->d_name, temp) == 0) {
sprintf(temp, "%s/%s", CFG.rulesdir, de->d_name); snprintf(temp, PATH_MAX, "%s/%s", CFG.rulesdir, de->d_name);
Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp)); Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp));
break; break;
} }
sprintf(temp, "%s.rul", msgs.Tag); snprintf(temp, PATH_MAX, "%s.rul", msgs.Tag);
if (strcasecmp(de->d_name, temp) == 0) { if (strcasecmp(de->d_name, temp) == 0) {
sprintf(temp, "%s/%s", CFG.rulesdir, de->d_name); snprintf(temp, PATH_MAX, "%s/%s", CFG.rulesdir, de->d_name);
Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp)); Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp));
break; break;
} }
memset(&temp, 0, sizeof(temp)); memset(&temp, 0, sizeof(temp));
strncpy(temp, msgs.Tag, 8); strncpy(temp, msgs.Tag, 8);
sprintf(temp, "%s.rul", temp); snprintf(temp, PATH_MAX, "%s.rul", temp);
if (strcasecmp(de->d_name, temp) == 0) { if (strcasecmp(de->d_name, temp) == 0) {
sprintf(temp, "%s/%s", CFG.rulesdir, de->d_name); snprintf(temp, PATH_MAX, "%s/%s", CFG.rulesdir, de->d_name);
Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp)); Syslog('+', "unlink(%s) rc=%d", temp, unlink(temp));
break; break;
} }
@ -716,7 +716,7 @@ void MsgGlobal(void)
* Build the groups select array * Build the groups select array
*/ */
working(1, 0, 0); working(1, 0, 0);
sprintf(mfile, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) != NULL) { if ((fil = fopen(mfile, "r")) != NULL) {
fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil); fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil);
@ -740,7 +740,7 @@ void MsgGlobal(void)
S.sendto = TRUE; S.sendto = TRUE;
S.receivefrom = TRUE; S.receivefrom = TRUE;
memset(&mfile, 0, sizeof(mfile)); memset(&mfile, 0, sizeof(mfile));
sprintf(mfile, "%s", CFG.origin); snprintf(mfile, 81, "%s", CFG.origin);
daysold = CFG.defdays; daysold = CFG.defdays;
maxmsgs = CFG.defmsgs; maxmsgs = CFG.defmsgs;
maxarticles = CFG.maxarticles; maxarticles = CFG.maxarticles;
@ -907,7 +907,7 @@ void MsgGlobal(void)
Sc.aka.point = a2.point; Sc.aka.point = a2.point;
Sc.sendto = TRUE; Sc.sendto = TRUE;
Sc.receivefrom = TRUE; Sc.receivefrom = TRUE;
sprintf(Sc.aka.domain, "%s", a2.domain); snprintf(Sc.aka.domain, 13, "%s", a2.domain);
fwrite(&Sc, sizeof(sysconnect), 1, tfil); fwrite(&Sc, sizeof(sysconnect), 1, tfil);
if (SaveMsgRec(marea, FALSE) == 0) { if (SaveMsgRec(marea, FALSE) == 0) {
Done++; Done++;
@ -925,7 +925,7 @@ void MsgGlobal(void)
Sc.aka.net = a2.net; Sc.aka.net = a2.net;
Sc.aka.node = a2.node; Sc.aka.node = a2.node;
Sc.aka.point = a2.point; Sc.aka.point = a2.point;
sprintf(Sc.aka.domain, "%s", a2.domain); snprintf(Sc.aka.domain, 13, "%s", a2.domain);
fseek(tfil, - sizeof(sysconnect), SEEK_CUR); fseek(tfil, - sizeof(sysconnect), SEEK_CUR);
fwrite(&Sc, sizeof(sysconnect), 1, tfil); fwrite(&Sc, sizeof(sysconnect), 1, tfil);
if (SaveMsgRec(marea, FALSE) == 0) { if (SaveMsgRec(marea, FALSE) == 0) {
@ -1014,7 +1014,7 @@ void MsgGlobal(void)
msgs.Aka.net = CFG.aka[akan].net; msgs.Aka.net = CFG.aka[akan].net;
msgs.Aka.node = CFG.aka[akan].node; msgs.Aka.node = CFG.aka[akan].node;
msgs.Aka.point = CFG.aka[akan].point; msgs.Aka.point = CFG.aka[akan].point;
sprintf(msgs.Aka.domain, "%s", CFG.aka[akan].domain); snprintf(msgs.Aka.domain, 13, "%s", CFG.aka[akan].domain);
if (SaveMsgRec(marea, FALSE) == 0) { if (SaveMsgRec(marea, FALSE) == 0) {
Done++; Done++;
Syslog('+', "Area %s now uses aka %s", msgs.Tag, aka2str(msgs.Aka)); Syslog('+', "Area %s now uses aka %s", msgs.Tag, aka2str(msgs.Aka));
@ -1023,7 +1023,7 @@ void MsgGlobal(void)
} }
break; break;
case 11:if (strcmp(msgs.Origin, mfile)) { case 11:if (strcmp(msgs.Origin, mfile)) {
sprintf(msgs.Origin, "%s", mfile); snprintf(msgs.Origin, 65, "%s", mfile);
if (SaveMsgRec(marea, FALSE) == 0) { if (SaveMsgRec(marea, FALSE) == 0) {
Done++; Done++;
Syslog('+', "Changed origin line in area %s", msgs.Tag); Syslog('+', "Changed origin line in area %s", msgs.Tag);
@ -1230,7 +1230,7 @@ int EditMsgRec(int Area)
*/ */
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
if (strlen(mgroup.BasePath)) { if (strlen(mgroup.BasePath)) {
sprintf(temp, "%s", msgs.Tag); snprintf(temp, 81, "%s", msgs.Tag);
for (i = 0; i < strlen(temp); i++) { for (i = 0; i < strlen(temp); i++) {
if (isupper(temp[i])) if (isupper(temp[i]))
temp[i] = tolower(temp[i]); temp[i] = tolower(temp[i]);
@ -1241,9 +1241,9 @@ int EditMsgRec(int Area)
if (temp[i] == '.') if (temp[i] == '.')
temp[i] = '/'; temp[i] = '/';
} }
sprintf(msgs.Base, "%s/%s", mgroup.BasePath, temp); snprintf(msgs.Base, 65, "%s/%s", mgroup.BasePath, temp);
} else { } else {
sprintf(temp, "%s/%s", msgs.Group, msgs.Tag); snprintf(temp, 81, "%s/%s", msgs.Group, msgs.Tag);
for (i = 0; i < strlen(temp); i++) { for (i = 0; i < strlen(temp); i++) {
if (isupper(temp[i])) if (isupper(temp[i]))
temp[i] = tolower(temp[i]); temp[i] = tolower(temp[i]);
@ -1254,7 +1254,7 @@ int EditMsgRec(int Area)
if (temp[i] == '.') if (temp[i] == '.')
temp[i] = '/'; temp[i] = '/';
} }
sprintf(msgs.Base, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp); snprintf(msgs.Base, 65, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp);
} }
free(temp); free(temp);
/* /*
@ -1268,24 +1268,24 @@ int EditMsgRec(int Area)
SetScreen(); SetScreen();
break; break;
case 4: E_STR( 9,16,64,msgs.Newsgroup, "The ^Newsgroup^ name of this area") case 4: E_STR( 9,16,64,msgs.Newsgroup, "The ^Newsgroup^ name of this area")
case 5: sprintf(oldpath, "%s", msgs.Base); case 5: snprintf(oldpath, 81, "%s", msgs.Base);
strcpy(msgs.Base, edit_jam(10,16,64,msgs.Base ,(char *)"The path to the ^JAM Message Base^")); strcpy(msgs.Base, edit_jam(10,16,64,msgs.Base ,(char *)"The path to the ^JAM Message Base^"));
if (strcmp(oldpath, msgs.Base)) { if (strcmp(oldpath, msgs.Base)) {
i = 0; i = 0;
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/scanmgr.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/scanmgr.data", getenv("MBSE_ROOT"));
if ((fil = fopen(temp, "r+")) != NULL) { if ((fil = fopen(temp, "r+")) != NULL) {
fread(&scanmgrhdr, sizeof(scanmgrhdr), 1, fil); fread(&scanmgrhdr, sizeof(scanmgrhdr), 1, fil);
while (fread(&scanmgr, scanmgrhdr.recsize, 1, fil) == 1) { while (fread(&scanmgr, scanmgrhdr.recsize, 1, fil) == 1) {
if (strcmp(oldpath, scanmgr.ScanBoard) == 0) { if (strcmp(oldpath, scanmgr.ScanBoard) == 0) {
i++; i++;
sprintf(scanmgr.ScanBoard, "%s", msgs.Base); snprintf(scanmgr.ScanBoard, 51, "%s", msgs.Base);
fseek(fil, - scanmgrhdr.recsize, SEEK_CUR); fseek(fil, - scanmgrhdr.recsize, SEEK_CUR);
fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil); fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil);
} }
if (strcmp(oldpath, scanmgr.ReplBoard) == 0) { if (strcmp(oldpath, scanmgr.ReplBoard) == 0) {
i++; i++;
sprintf(scanmgr.ReplBoard, "%s", msgs.Base); snprintf(scanmgr.ReplBoard, 51, "%s", msgs.Base);
fseek(fil, - scanmgrhdr.recsize, SEEK_CUR); fseek(fil, - scanmgrhdr.recsize, SEEK_CUR);
fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil); fwrite(&scanmgr, scanmgrhdr.recsize, 1, fil);
} }
@ -1296,13 +1296,13 @@ int EditMsgRec(int Area)
} }
i = 0; i = 0;
sprintf(temp, "%s/etc/newfiles.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
if ((fil = fopen(temp, "r+")) != NULL) { if ((fil = fopen(temp, "r+")) != NULL) {
fread(&newfileshdr, sizeof(newfileshdr), 1, fil); fread(&newfileshdr, sizeof(newfileshdr), 1, fil);
while (fread(&newfiles, newfileshdr.recsize, 1, fil) == 1) { while (fread(&newfiles, newfileshdr.recsize, 1, fil) == 1) {
if (strcmp(oldpath, newfiles.Area) == 0) { if (strcmp(oldpath, newfiles.Area) == 0) {
i++; i++;
sprintf(newfiles.Area, "%s", msgs.Base); snprintf(newfiles.Area, 51, "%s", msgs.Base);
fseek(fil, - newfileshdr.recsize, SEEK_CUR); fseek(fil, - newfileshdr.recsize, SEEK_CUR);
fwrite(&newfiles, newfileshdr.recsize, 1, fil); fwrite(&newfiles, newfileshdr.recsize, 1, fil);
} }
@ -1340,7 +1340,7 @@ int EditMsgRec(int Area)
} }
if (!Active) { if (!Active) {
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s.jhr", msgs.Base); snprintf(temp, PATH_MAX, "%s.jhr", msgs.Base);
if (strlen(msgs.Base) && (file_size(temp) != 1024)) { if (strlen(msgs.Base) && (file_size(temp) != 1024)) {
if (yes_no((char *)"There are messages in this area, delete them") == 0) if (yes_no((char *)"There are messages in this area, delete them") == 0)
Active = TRUE; Active = TRUE;
@ -1442,7 +1442,7 @@ void EditMsgarea(void)
mbse_mvprintw( 5, 3, "9.2 MESSAGE AREA SETUP"); mbse_mvprintw( 5, 3, "9.2 MESSAGE AREA SETUP");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records != 0) { if (records != 0) {
sprintf(temp, "%s/etc/mareas.temp", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.temp", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&msgshdr, sizeof(msgshdr), 1, fil); fread(&msgshdr, sizeof(msgshdr), 1, fil);
@ -1455,10 +1455,10 @@ void EditMsgarea(void)
fread(&msgs, msgshdr.recsize, 1, fil); fread(&msgs, msgshdr.recsize, 1, fil);
if (msgs.Active) { if (msgs.Active) {
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
sprintf(temp, "%3d. %-8s %-23s %-40s", o + i, getmsgtype(msgs.Type), msgs.Tag, msgs.Name); snprintf(temp, 81, "%3d. %-8s %-23s %-40s", o + i, getmsgtype(msgs.Type), msgs.Tag, msgs.Name);
} else { } else {
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d.", o+i); snprintf(temp, 81, "%3d.", o+i);
} }
mbse_mvprintw(y, 2, temp); mbse_mvprintw(y, 2, temp);
y++; y++;
@ -1597,12 +1597,12 @@ char *PickMsgarea(char *shdr)
for (;;) { for (;;) {
clr_index(); clr_index();
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
sprintf(temp, "%s. MESSAGE AREA SELECT", shdr); snprintf(temp, 81, "%s. MESSAGE AREA SELECT", shdr);
mbse_mvprintw(5, 3, temp); mbse_mvprintw(5, 3, temp);
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records) { if (records) {
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&msgshdr, sizeof(msgshdr), 1, fil); fread(&msgshdr, sizeof(msgshdr), 1, fil);
@ -1622,7 +1622,7 @@ char *PickMsgarea(char *shdr)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-31s", o + i, msgs.Name); snprintf(temp, 81, "%3d. %-31s", o + i, msgs.Name);
temp[38] = '\0'; temp[38] = '\0';
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -1645,7 +1645,7 @@ char *PickMsgarea(char *shdr)
o -= 20; o -= 20;
if ((atoi(pick) >= 1) && (atoi(pick) <= records)) { if ((atoi(pick) >= 1) && (atoi(pick) <= records)) {
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
offset = msgshdr.hdrsize + ((atoi(pick) - 1) * (msgshdr.recsize + msgshdr.syssize)); offset = msgshdr.hdrsize + ((atoi(pick) - 1) * (msgshdr.recsize + msgshdr.syssize));
fseek(fil, offset, SEEK_SET); fseek(fil, offset, SEEK_SET);
@ -1653,7 +1653,7 @@ char *PickMsgarea(char *shdr)
fclose(fil); fclose(fil);
if (msgs.Active) { if (msgs.Active) {
memset(&Buf, 0, sizeof(Buf)); memset(&Buf, 0, sizeof(Buf));
sprintf(Buf, "%s", msgs.Base); snprintf(Buf, 81, "%s", msgs.Base);
return Buf; return Buf;
} }
} }
@ -1669,7 +1669,7 @@ int GroupInMarea(char *Group)
FILE *no; FILE *no;
char temp[PATH_MAX]; char temp[PATH_MAX];
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return 0; return 0;
@ -1702,7 +1702,7 @@ int NodeInMarea(fidoaddr A)
char temp[PATH_MAX]; char temp[PATH_MAX];
sysconnect S; sysconnect S;
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return 0; return 0;
@ -1736,7 +1736,7 @@ void msged_areas(FILE *fp)
int i = 0; int i = 0;
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return; return;
@ -1788,7 +1788,7 @@ void gold_areas(FILE *fp)
int i = 0; int i = 0;
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return; return;
@ -1854,7 +1854,7 @@ int mail_area_doc(FILE *fp, FILE *toc, int page)
else else
LMiy = Miy - 1; LMiy = Miy - 1;
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return page; return page;
@ -1883,7 +1883,7 @@ int mail_area_doc(FILE *fp, FILE *toc, int page)
} else } else
fprintf(fp, "\n\n"); fprintf(fp, "\n\n");
sprintf(temp, "msgarea_%d.html", i); snprintf(temp, 81, "msgarea_%d.html", i);
fprintf(ip, " <TR><TD><A HREF=\"%s\">%d</A></TD><TD>%s</TD><TD>%s</TD>\n", fprintf(ip, " <TR><TD><A HREF=\"%s\">%d</A></TD><TD>%s</TD><TD>%s</TD>\n",
temp, i, msgs.Name, strlen(msgs.Tag) ? msgs.Tag : "&nbsp;"); temp, i, msgs.Name, strlen(msgs.Tag) ? msgs.Tag : "&nbsp;");
if ((wp = open_webdoc(temp, (char *)"File area", msgs.Name))) { if ((wp = open_webdoc(temp, (char *)"File area", msgs.Name))) {
@ -1986,7 +1986,7 @@ int mail_area_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Link %2d %s %s\n", j+1, status, aka2str(System.aka)); fprintf(fp, " Link %2d %s %s\n", j+1, status, aka2str(System.aka));
if (wp != NULL) { if (wp != NULL) {
sprintf(temp, "%s/etc/nodes.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/nodes.data", getenv("MBSE_ROOT"));
if ((ti = fopen(temp, "r"))) { if ((ti = fopen(temp, "r"))) {
fread(&nodeshdr, sizeof(nodeshdr), 1, ti); fread(&nodeshdr, sizeof(nodeshdr), 1, ti);
fseek(ti, 0, SEEK_SET); fseek(ti, 0, SEEK_SET);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Edit BBS menus * Purpose ...............: Edit BBS menus
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2004 * Copyright (C) 1997-2005
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -47,13 +47,13 @@ char *select_menurec(int max)
int pick; int pick;
if (max > 10) if (max > 10)
sprintf(help, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete, ^M^ove, ^P^revious, ^N^ext", max); snprintf(help, 81, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete, ^M^ove, ^P^revious, ^N^ext", max);
else if (max > 1) else if (max > 1)
sprintf(help, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete, ^M^ove", max); snprintf(help, 81, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete, ^M^ove", max);
else if (max == 1) else if (max == 1)
sprintf(help, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete", max); snprintf(help, 81, "Rec. (1..%d), ^\"-\"^ Back, ^A^ppend, ^D^elete", max);
else else
sprintf(help, "Select ^\"-\"^ for previous level, ^A^ppend a record"); snprintf(help, 81, "Select ^\"-\"^ for previous level, ^A^ppend a record");
showhelp(help); showhelp(help);
@ -157,7 +157,7 @@ int GetSubmenu(int Base, int Max)
x = 2; x = 2;
for (i = 1; i <= Max; i++) { for (i = 1; i <= Max; i++) {
sprintf(temp, "%2d. %s", i, getmenutype(i - 1 + Base)); snprintf(temp, 81, "%2d. %s", i, getmenutype(i - 1 + Base));
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
if ((i % 13) == 0) { if ((i % 13) == 0) {
@ -316,10 +316,10 @@ void EditMenu(char *Name)
IsDoing("Edit Menu"); IsDoing("Edit Menu");
working(1, 0, 0); working(1, 0, 0);
sprintf(mtemp, "%s/%s.tmp", lang.MenuPath, Name); snprintf(mtemp, PATH_MAX, "%s/%s.tmp", lang.MenuPath, Name);
tmp = fopen(mtemp, "w+"); tmp = fopen(mtemp, "w+");
sprintf(temp, "%s/%s.mnu", lang.MenuPath, Name); snprintf(temp, PATH_MAX, "%s/%s.mnu", lang.MenuPath, Name);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
while (fread(&menus, sizeof(menus), 1, fil) == 1) { while (fread(&menus, sizeof(menus), 1, fil) == 1) {
fwrite(&menus, sizeof(menus), 1, tmp); fwrite(&menus, sizeof(menus), 1, tmp);
@ -332,7 +332,7 @@ void EditMenu(char *Name)
for (;;) { for (;;) {
clr_index(); clr_index();
working(1, 0, 0); working(1, 0, 0);
sprintf(temp, "8.3 EDIT MENU \"%s\" (%s)", Name, lang.Name); snprintf(temp, 81, "8.3 EDIT MENU \"%s\" (%s)", Name, lang.Name);
mbse_mvprintw( 5, 6, tu(temp)); mbse_mvprintw( 5, 6, tu(temp));
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
fseek(tmp, 0, SEEK_SET); fseek(tmp, 0, SEEK_SET);
@ -355,9 +355,11 @@ void EditMenu(char *Name)
mbse_mvprintw(y, 10, "%1s", menus.MenuKey); mbse_mvprintw(y, 10, "%1s", menus.MenuKey);
} }
if (le_int(menus.MenuType) == 999 ) { if (le_int(menus.MenuType) == 999 ) {
sprintf(temp, "%-29s %5d %s", menus.TypeDesc, le_int(menus.MenuSecurity.level), menus.Display); snprintf(temp, 81, "%-29s %5d %s", menus.TypeDesc,
le_int(menus.MenuSecurity.level), menus.Display);
} else { } else {
sprintf(temp, "%-29s %5d %s", menus.TypeDesc, le_int(menus.MenuSecurity.level), menus.OptionalData); snprintf(temp, 81, "%-29s %5d %s", menus.TypeDesc,
le_int(menus.MenuSecurity.level), menus.OptionalData);
} }
temp[68] = '\0'; temp[68] = '\0';
mbse_mvprintw(y, 12, temp); mbse_mvprintw(y, 12, temp);
@ -376,7 +378,7 @@ void EditMenu(char *Name)
if (MenuUpdated) { if (MenuUpdated) {
if (yes_no((char *)"Menu is changed, save changes") == 1) { if (yes_no((char *)"Menu is changed, save changes") == 1) {
working(1, 0, 0); working(1, 0, 0);
sprintf(temp, "%s/%s.mnu", lang.MenuPath, Name); snprintf(temp, PATH_MAX, "%s/%s.mnu", lang.MenuPath, Name);
if ((fil = fopen(temp, "w+")) == NULL) { if ((fil = fopen(temp, "w+")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
} else { } else {
@ -527,7 +529,7 @@ void EditMenus(void)
y = 7; y = 7;
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
for (i = 1; i <= mcount; i++) { for (i = 1; i <= mcount; i++) {
sprintf(temp, "%2d. %s", i, menuname[i-1]); snprintf(temp, 81, "%2d. %s", i, menuname[i-1]);
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
if ((i % 10) == 0) { if ((i % 10) == 0) {
@ -585,7 +587,7 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
int j; int j;
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/language.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/language.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) { if ((no = fopen(temp, "r")) == NULL) {
free(temp); free(temp);
return page; return page;
@ -609,10 +611,10 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
j = 0; j = 0;
fprintf(ip, "<LI><A HREF=\"menu_%s_%s.html\">%s</A></LI>\n", lang.LangKey, de->d_name, de->d_name); fprintf(ip, "<LI><A HREF=\"menu_%s_%s.html\">%s</A></LI>\n", lang.LangKey, de->d_name, de->d_name);
sprintf(temp, "%s/%s", lang.MenuPath, de->d_name); snprintf(temp, PATH_MAX, "%s/%s", lang.MenuPath, de->d_name);
fprintf(fp, "\n MENU %s (%s)\n\n", de->d_name, lang.Name); fprintf(fp, "\n MENU %s (%s)\n\n", de->d_name, lang.Name);
if ((mn = fopen(temp, "r")) != NULL) { if ((mn = fopen(temp, "r")) != NULL) {
sprintf(temp, "menu_%s_%s.html", lang.LangKey, de->d_name); snprintf(temp, 81, "menu_%s_%s.html", lang.LangKey, de->d_name);
if ((wp = open_webdoc(temp, lang.Name, de->d_name))) { if ((wp = open_webdoc(temp, lang.Name, de->d_name))) {
fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"menus.html\">Back</A>\n"); fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"menus.html\">Back</A>\n");
while (fread(&menus, sizeof(menus), 1, mn) == 1) { while (fread(&menus, sizeof(menus), 1, mn) == 1) {
@ -628,7 +630,7 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Menu select Autoexec\n"); fprintf(fp, " Menu select Autoexec\n");
add_webtable(wp, (char *)"Menu select", (char *)"Autoexec"); add_webtable(wp, (char *)"Menu select", (char *)"Autoexec");
} }
sprintf(temp, "%d %s", le_int(menus.MenuType), menus.TypeDesc); snprintf(temp, 81, "%d %s", le_int(menus.MenuType), menus.TypeDesc);
add_webtable(wp, (char *)"Menu type", temp); add_webtable(wp, (char *)"Menu type", temp);
add_webtable(wp, (char *)"Optional data", menus.OptionalData); add_webtable(wp, (char *)"Optional data", menus.OptionalData);
add_webtable(wp, (char *)"Display", menus.Display); add_webtable(wp, (char *)"Display", menus.Display);

View File

@ -54,7 +54,7 @@ int CountMGroup(void)
char ffile[PATH_MAX]; char ffile[PATH_MAX];
int count; int count;
sprintf(ffile, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "r")) == NULL) { if ((fil = fopen(ffile, "r")) == NULL) {
if ((fil = fopen(ffile, "a+")) != NULL) { if ((fil = fopen(ffile, "a+")) != NULL) {
Syslog('+', "Created new %s", ffile); Syslog('+', "Created new %s", ffile);
@ -62,13 +62,13 @@ int CountMGroup(void)
mgrouphdr.recsize = sizeof(mgroup); mgrouphdr.recsize = sizeof(mgroup);
fwrite(&mgrouphdr, sizeof(mgrouphdr), 1, fil); fwrite(&mgrouphdr, sizeof(mgrouphdr), 1, fil);
memset(&mgroup, 0, sizeof(mgroup)); memset(&mgroup, 0, sizeof(mgroup));
sprintf(mgroup.Name, "NOGROUP"); snprintf(mgroup.Name, 13, "NOGROUP");
sprintf(mgroup.Comment, "Dummy group for badmail, dupemail"); snprintf(mgroup.Comment, 56, "Dummy group for badmail, dupemail");
mgroup.Active = TRUE; mgroup.Active = TRUE;
fwrite(&mgroup, sizeof(mgroup), 1, fil); fwrite(&mgroup, sizeof(mgroup), 1, fil);
memset(&mgroup, 0, sizeof(mgroup)); memset(&mgroup, 0, sizeof(mgroup));
sprintf(mgroup.Name, "LOCAL"); snprintf(mgroup.Name, 13, "LOCAL");
sprintf(mgroup.Comment, "Local mail areas"); snprintf(mgroup.Comment, 56, "Local mail areas");
mgroup.Active = TRUE; mgroup.Active = TRUE;
fwrite(&mgroup, sizeof(mgroup), 1, fil); fwrite(&mgroup, sizeof(mgroup), 1, fil);
fclose(fil); fclose(fil);
@ -103,8 +103,8 @@ int OpenMGroup(void)
long oldsize; long oldsize;
int i; int i;
sprintf(fnin, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(fnin, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
sprintf(fnout, "%s/etc/mgroups.temp", getenv("MBSE_ROOT")); snprintf(fnout, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT"));
if ((fin = fopen(fnin, "r")) != NULL) { if ((fin = fopen(fnin, "r")) != NULL) {
if ((fout = fopen(fnout, "w")) != NULL) { if ((fout = fopen(fnout, "w")) != NULL) {
MGrpUpdated = 0; MGrpUpdated = 0;
@ -148,7 +148,7 @@ int OpenMGroup(void)
if (temp[i] == '.') if (temp[i] == '.')
temp[i] = '/'; temp[i] = '/';
} }
sprintf(mgroup.BasePath, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp); snprintf(mgroup.BasePath, 65, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp);
} }
if (MGrpUpdated && !mgroup.LinkSec.level) { if (MGrpUpdated && !mgroup.LinkSec.level) {
mgroup.LinkSec.level = 1; mgroup.LinkSec.level = 1;
@ -179,8 +179,8 @@ void CloseMGroup(int force)
FILE *fi, *fo; FILE *fi, *fo;
st_list *mgr = NULL, *tmp; st_list *mgr = NULL, *tmp;
sprintf(fin, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(fin, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
sprintf(fout,"%s/etc/mgroups.temp", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT"));
if (MGrpUpdated == 1) { if (MGrpUpdated == 1) {
if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) {
@ -225,7 +225,7 @@ int AppendMGroup(void)
FILE *fil; FILE *fil;
char ffile[PATH_MAX]; char ffile[PATH_MAX];
sprintf(ffile, "%s/etc/mgroups.temp", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "a")) != NULL) { if ((fil = fopen(ffile, "a")) != NULL) {
memset(&mgroup, 0, sizeof(mgroup)); memset(&mgroup, 0, sizeof(mgroup));
mgroup.StartDate = time(NULL); mgroup.StartDate = time(NULL);
@ -309,7 +309,7 @@ int EditMGrpRec(int Area)
working(1, 0, 0); working(1, 0, 0);
IsDoing("Edit MessageGroup"); IsDoing("Edit MessageGroup");
sprintf(mfile, "%s/etc/mgroups.temp", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) == NULL) { if ((fil = fopen(mfile, "r")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
@ -389,7 +389,7 @@ int EditMGrpRec(int Area)
if (isupper(temp[i])) if (isupper(temp[i]))
temp[i] = tolower(temp[i]); temp[i] = tolower(temp[i]);
} }
sprintf(mgroup.BasePath, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp); snprintf(mgroup.BasePath, 65, "%s/var/mail/%s", getenv("MBSE_ROOT"), temp);
} }
break; break;
case 2: E_STR( 8,16,55, mgroup.Comment, "The ^desription^ for this message group") case 2: E_STR( 8,16,55, mgroup.Comment, "The ^desription^ for this message group")
@ -472,7 +472,7 @@ void EditMGroup(void)
mbse_mvprintw( 5, 4, "9.1 MESSAGE GROUPS SETUP"); mbse_mvprintw( 5, 4, "9.1 MESSAGE GROUPS SETUP");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records != 0) { if (records != 0) {
sprintf(temp, "%s/etc/mgroups.temp", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mgroups.temp", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil); fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil);
@ -492,7 +492,7 @@ void EditMGroup(void)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-12s %-18s", o + i, mgroup.Name, mgroup.Comment); snprintf(temp, 81, "%3d. %-12s %-18s", o + i, mgroup.Name, mgroup.Comment);
temp[38] = '\0'; temp[38] = '\0';
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -576,11 +576,11 @@ char *PickMGroup(char *shdr)
for (;;) { for (;;) {
clr_index(); clr_index();
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
sprintf(temp, "%s. MESSAGE GROUP SELECT", shdr); snprintf(temp, 81, "%s. MESSAGE GROUP SELECT", shdr);
mbse_mvprintw( 5, 4, temp); mbse_mvprintw( 5, 4, temp);
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records != 0) { if (records != 0) {
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil); fread(&mgrouphdr, sizeof(mgrouphdr), 1, fil);
@ -600,7 +600,7 @@ char *PickMGroup(char *shdr)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-12s %-18s", o + i, mgroup.Name, mgroup.Comment); snprintf(temp, 81, "%3d. %-12s %-18s", o + i, mgroup.Name, mgroup.Comment);
temp[38] = '\0'; temp[38] = '\0';
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -623,7 +623,7 @@ char *PickMGroup(char *shdr)
o = o - 20; o = o - 20;
if ((atoi(pick) >= 1) && (atoi(pick) <= records)) { if ((atoi(pick) >= 1) && (atoi(pick) <= records)) {
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
fil = fopen(temp, "r"); fil = fopen(temp, "r");
offset = sizeof(mgrouphdr) + ((atoi(pick) - 1) * mgrouphdr.recsize); offset = sizeof(mgrouphdr) + ((atoi(pick) - 1) * mgrouphdr.recsize);
fseek(fil, offset, 0); fseek(fil, offset, 0);
@ -643,7 +643,7 @@ int mail_group_doc(FILE *fp, FILE *toc, int page)
FILE *ti, *wp, *ip, *no; FILE *ti, *wp, *ip, *no;
int refs, i, j; int refs, i, j;
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return page; return page;
@ -669,7 +669,7 @@ int mail_group_doc(FILE *fp, FILE *toc, int page)
j = 0; j = 0;
} }
sprintf(temp, "msggroup_%s.html", mgroup.Name); snprintf(temp, 81, "msggroup_%s.html", mgroup.Name);
fprintf(ip, " <TR><TD><A HREF=\"%s\">%s</A></TD><TD>%s</TD><TD>%s</TD></TR>\n", fprintf(ip, " <TR><TD><A HREF=\"%s\">%s</A></TD><TD>%s</TD><TD>%s</TD></TR>\n",
temp, mgroup.Name, mgroup.Comment, getboolean(mgroup.Active)); temp, mgroup.Name, mgroup.Comment, getboolean(mgroup.Active));
@ -704,7 +704,7 @@ int mail_group_doc(FILE *fp, FILE *toc, int page)
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>Message Areas Reference</H3>\n"); fprintf(wp, "<H3>Message Areas Reference</H3>\n");
refs = 0; refs = 0;
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
if ((ti = fopen(temp, "r"))) { if ((ti = fopen(temp, "r"))) {
fread(&tichdr, sizeof(tichdr), 1, ti); fread(&tichdr, sizeof(tichdr), 1, ti);
fseek(ti, 0, SEEK_SET); fseek(ti, 0, SEEK_SET);
@ -735,7 +735,7 @@ int mail_group_doc(FILE *fp, FILE *toc, int page)
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>Nodes Reference</H3>\n"); fprintf(wp, "<H3>Nodes Reference</H3>\n");
refs = 0; refs = 0;
sprintf(temp, "%s/etc/nodes.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/nodes.data", getenv("MBSE_ROOT"));
if ((ti = fopen(temp, "r"))) { if ((ti = fopen(temp, "r"))) {
fread(&nodeshdr, sizeof(nodeshdr), 1, ti); fread(&nodeshdr, sizeof(nodeshdr), 1, ti);
fseek(ti, 0, SEEK_SET); fseek(ti, 0, SEEK_SET);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Setup Modem structure. * Purpose ...............: Setup Modem structure.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2004 * Copyright (C) 1997-2005
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -52,7 +52,7 @@ int CountModem(void)
char ffile[PATH_MAX]; char ffile[PATH_MAX];
int count; int count;
sprintf(ffile, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "r")) == NULL) { if ((fil = fopen(ffile, "r")) == NULL) {
if ((fil = fopen(ffile, "a+")) != NULL) { if ((fil = fopen(ffile, "a+")) != NULL) {
Syslog('+', "Created new %s", ffile); Syslog('+', "Created new %s", ffile);
@ -64,78 +64,78 @@ int CountModem(void)
* Create some default modem types * Create some default modem types
*/ */
memset(&modem, 0, sizeof(modem)); memset(&modem, 0, sizeof(modem));
sprintf(modem.modem, "Dynalink 1428EXTRA"); snprintf(modem.modem, 31, "Dynalink 1428EXTRA");
sprintf(modem.init[0], "AT Z\\r"); snprintf(modem.init[0], 61, "AT Z\\r");
sprintf(modem.init[1], "AT &F &C1 &D2 X4 W2 B0 M0 \\\\V1 \\\\G0 &K3 S37=0\\r"); snprintf(modem.init[1], 61, "AT &F &C1 &D2 X4 W2 B0 M0 \\\\V1 \\\\G0 &K3 S37=0\\r");
sprintf(modem.ok, "OK"); snprintf(modem.ok, 11, "OK");
sprintf(modem.dial, "ATDT\\T\\r"); snprintf(modem.dial, 41, "ATDT\\T\\r");
sprintf(modem.connect[0], "CONNECT 56000"); snprintf(modem.connect[0], 31, "CONNECT 56000");
sprintf(modem.connect[1], "CONNECT 48000"); snprintf(modem.connect[1], 31, "CONNECT 48000");
sprintf(modem.connect[2], "CONNECT 44000"); snprintf(modem.connect[2], 31, "CONNECT 44000");
sprintf(modem.connect[3], "CONNECT 41333"); snprintf(modem.connect[3], 31, "CONNECT 41333");
sprintf(modem.connect[4], "CONNECT 38000"); snprintf(modem.connect[4], 31, "CONNECT 38000");
sprintf(modem.connect[5], "CONNECT 33600"); snprintf(modem.connect[5], 31, "CONNECT 33600");
sprintf(modem.connect[6], "CONNECT 31200"); snprintf(modem.connect[6], 31, "CONNECT 31200");
sprintf(modem.connect[7], "CONNECT 28800"); snprintf(modem.connect[7], 31, "CONNECT 28800");
sprintf(modem.connect[8], "CONNECT 26400"); snprintf(modem.connect[8], 31, "CONNECT 26400");
sprintf(modem.connect[9], "CONNECT 24000"); snprintf(modem.connect[9], 31, "CONNECT 24000");
sprintf(modem.connect[10], "CONNECT 21600"); snprintf(modem.connect[10], 31, "CONNECT 21600");
sprintf(modem.connect[11], "CONNECT 19200"); snprintf(modem.connect[11], 31, "CONNECT 19200");
sprintf(modem.connect[12], "CONNECT 16800"); snprintf(modem.connect[12], 31, "CONNECT 16800");
sprintf(modem.connect[13], "CONNECT 14400"); snprintf(modem.connect[13], 31, "CONNECT 14400");
sprintf(modem.connect[14], "CONNECT 12000"); snprintf(modem.connect[14], 31, "CONNECT 12000");
sprintf(modem.connect[15], "CONNECT 9600"); snprintf(modem.connect[15], 31, "CONNECT 9600");
sprintf(modem.connect[16], "CONNECT 7200"); snprintf(modem.connect[16], 31, "CONNECT 7200");
sprintf(modem.connect[17], "CONNECT 4800"); snprintf(modem.connect[17], 31, "CONNECT 4800");
sprintf(modem.connect[18], "CONNECT 2400"); snprintf(modem.connect[18], 31, "CONNECT 2400");
sprintf(modem.connect[19], "CONNECT"); snprintf(modem.connect[19], 31, "CONNECT");
sprintf(modem.reset, "AT&F&C1&D2X4W2B0M0&K3\\r"); snprintf(modem.reset, 61, "AT&F&C1&D2X4W2B0M0&K3\\r");
sprintf(modem.error[0], "BUSY"); snprintf(modem.error[0], 21, "BUSY");
sprintf(modem.error[1], "NO CARRIER"); snprintf(modem.error[1], 21, "NO CARRIER");
sprintf(modem.error[2], "NO DIALTONE"); snprintf(modem.error[2], 21, "NO DIALTONE");
sprintf(modem.error[3], "NO ANSWER"); snprintf(modem.error[3], 21, "NO ANSWER");
sprintf(modem.error[4], "RING\\r"); snprintf(modem.error[4], 21, "RING\\r");
sprintf(modem.error[5], "ERROR"); snprintf(modem.error[5], 21, "ERROR");
sprintf(modem.error[6], "CONNECT VOICE"); snprintf(modem.error[6], 21, "CONNECT VOICE");
sprintf(modem.speed, "28800"); snprintf(modem.speed, 16, "28800");
modem.available = TRUE; modem.available = TRUE;
modem.costoffset = 6; modem.costoffset = 6;
fwrite(&modem, sizeof(modem), 1, fil); fwrite(&modem, sizeof(modem), 1, fil);
sprintf(modem.modem, "ISDN Dynalink"); snprintf(modem.modem, 31, "ISDN Dynalink");
sprintf(modem.init[0], "ATZ\\r"); snprintf(modem.init[0], 61, "ATZ\\r");
sprintf(modem.init[1], "AT&E3306018793\\r"); snprintf(modem.init[1], 61, "AT&E3306018793\\r");
sprintf(modem.init[2], "AT&B512\\r"); snprintf(modem.init[2], 61, "AT&B512\\r");
sprintf(modem.hangup, "ATH0\\r"); snprintf(modem.hangup, 41, "ATH0\\r");
sprintf(modem.speed, "64000"); snprintf(modem.speed, 16, "64000");
modem.costoffset = 1; modem.costoffset = 1;
fwrite(&modem, sizeof(modem), 1, fil); fwrite(&modem, sizeof(modem), 1, fil);
sprintf(modem.modem, "Standard Hayes V34"); snprintf(modem.modem, 31, "Standard Hayes V34");
sprintf(modem.init[0], "ATZ\\r"); snprintf(modem.init[0], 61, "ATZ\\r");
memset(&modem.init[1], 0, sizeof(modem.init[1])); memset(&modem.init[1], 0, sizeof(modem.init[1]));
memset(&modem.init[2], 0, sizeof(modem.init[2])); memset(&modem.init[2], 0, sizeof(modem.init[2]));
memset(&modem.hangup, 0, sizeof(modem.hangup)); memset(&modem.hangup, 0, sizeof(modem.hangup));
sprintf(modem.speed, "33600"); snprintf(modem.speed, 16, "33600");
modem.costoffset = 6; modem.costoffset = 6;
fwrite(&modem, sizeof(modem), 1, fil); fwrite(&modem, sizeof(modem), 1, fil);
memset(&modem, 0, sizeof(modem)); memset(&modem, 0, sizeof(modem));
sprintf(modem.modem, "ISDN Linux"); snprintf(modem.modem, 31, "ISDN Linux");
sprintf(modem.init[0], "AT Z\\r"); snprintf(modem.init[0], 61, "AT Z\\r");
sprintf(modem.ok, "OK"); snprintf(modem.ok, 11, "OK");
sprintf(modem.dial, "ATDT\\T\\r"); snprintf(modem.dial, 41, "ATDT\\T\\r");
sprintf(modem.info, "ATI2\\r"); snprintf(modem.info, 41, "ATI2\\r");
sprintf(modem.hangup, "\\d\\p\\p\\p+++\\d\\p\\p\\pATH0\\r"); snprintf(modem.hangup, 41, "\\d\\p\\p\\p+++\\d\\p\\p\\pATH0\\r");
sprintf(modem.connect[0], "CONNECT 64000"); snprintf(modem.connect[0], 31, "CONNECT 64000");
sprintf(modem.connect[1], "CONNECT"); snprintf(modem.connect[1], 31, "CONNECT");
sprintf(modem.error[0], "BUSY"); snprintf(modem.error[0], 21, "BUSY");
sprintf(modem.error[1], "NO CARRIER"); snprintf(modem.error[1], 21, "NO CARRIER");
sprintf(modem.error[2], "NO DIALTONE"); snprintf(modem.error[2], 21, "NO DIALTONE");
sprintf(modem.error[3], "NO ANSWER"); snprintf(modem.error[3], 21, "NO ANSWER");
sprintf(modem.error[4], "RING\\r"); snprintf(modem.error[4], 21, "RING\\r");
sprintf(modem.error[5], "ERROR"); snprintf(modem.error[5], 21, "ERROR");
sprintf(modem.speed, "64000"); snprintf(modem.speed, 16, "64000");
modem.available = TRUE; modem.available = TRUE;
modem.costoffset = 1; modem.costoffset = 1;
fwrite(&modem, sizeof(modem), 1, fil); fwrite(&modem, sizeof(modem), 1, fil);
@ -169,8 +169,8 @@ int OpenModem(void)
char fnin[PATH_MAX], fnout[PATH_MAX]; char fnin[PATH_MAX], fnout[PATH_MAX];
long oldsize; long oldsize;
sprintf(fnin, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(fnin, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
sprintf(fnout, "%s/etc/modem.temp", getenv("MBSE_ROOT")); snprintf(fnout, PATH_MAX, "%s/etc/modem.temp", getenv("MBSE_ROOT"));
if ((fin = fopen(fnin, "r")) != NULL) { if ((fin = fopen(fnin, "r")) != NULL) {
if ((fout = fopen(fnout, "w")) != NULL) { if ((fout = fopen(fnout, "w")) != NULL) {
fread(&modemhdr, sizeof(modemhdr), 1, fin); fread(&modemhdr, sizeof(modemhdr), 1, fin);
@ -218,8 +218,8 @@ void CloseModem(int force)
FILE *fi, *fo; FILE *fi, *fo;
st_list *mdm = NULL, *tmp; st_list *mdm = NULL, *tmp;
sprintf(fin, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(fin, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
sprintf(fout,"%s/etc/modem.temp", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/modem.temp", getenv("MBSE_ROOT"));
if (ModemUpdated == 1) { if (ModemUpdated == 1) {
if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) {
@ -263,40 +263,40 @@ int AppendModem(void)
FILE *fil; FILE *fil;
char ffile[PATH_MAX]; char ffile[PATH_MAX];
sprintf(ffile, "%s/etc/modem.temp", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/modem.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "a")) != NULL) { if ((fil = fopen(ffile, "a")) != NULL) {
memset(&modem, 0, sizeof(modem)); memset(&modem, 0, sizeof(modem));
sprintf(modem.init[0], "ATZ\\r"); snprintf(modem.init[0], 61, "ATZ\\r");
sprintf(modem.ok, "OK"); snprintf(modem.ok, 11, "OK");
sprintf(modem.dial, "ATDT\\T\\r"); snprintf(modem.dial, 41, "ATDT\\T\\r");
sprintf(modem.connect[0], "CONNECT 56000"); snprintf(modem.connect[0], 31, "CONNECT 56000");
sprintf(modem.connect[1], "CONNECT 48000"); snprintf(modem.connect[1], 31, "CONNECT 48000");
sprintf(modem.connect[2], "CONNECT 44000"); snprintf(modem.connect[2], 31, "CONNECT 44000");
sprintf(modem.connect[3], "CONNECT 41333"); snprintf(modem.connect[3], 31, "CONNECT 41333");
sprintf(modem.connect[4], "CONNECT 38000"); snprintf(modem.connect[4], 31, "CONNECT 38000");
sprintf(modem.connect[5], "CONNECT 33600"); snprintf(modem.connect[5], 31, "CONNECT 33600");
sprintf(modem.connect[6], "CONNECT 31200"); snprintf(modem.connect[6], 31, "CONNECT 31200");
sprintf(modem.connect[7], "CONNECT 28800"); snprintf(modem.connect[7], 31, "CONNECT 28800");
sprintf(modem.connect[8], "CONNECT 26400"); snprintf(modem.connect[8], 31, "CONNECT 26400");
sprintf(modem.connect[9], "CONNECT 24000"); snprintf(modem.connect[9], 31, "CONNECT 24000");
sprintf(modem.connect[10], "CONNECT 21600"); snprintf(modem.connect[10], 31, "CONNECT 21600");
sprintf(modem.connect[11], "CONNECT 19200"); snprintf(modem.connect[11], 31, "CONNECT 19200");
sprintf(modem.connect[12], "CONNECT 16800"); snprintf(modem.connect[12], 31, "CONNECT 16800");
sprintf(modem.connect[13], "CONNECT 14400"); snprintf(modem.connect[13], 31, "CONNECT 14400");
sprintf(modem.connect[14], "CONNECT 12000"); snprintf(modem.connect[14], 31, "CONNECT 12000");
sprintf(modem.connect[15], "CONNECT 9600"); snprintf(modem.connect[15], 31, "CONNECT 9600");
sprintf(modem.connect[16], "CONNECT 7200"); snprintf(modem.connect[16], 31, "CONNECT 7200");
sprintf(modem.connect[17], "CONNECT 4800"); snprintf(modem.connect[17], 31, "CONNECT 4800");
sprintf(modem.connect[18], "CONNECT 2400"); snprintf(modem.connect[18], 31, "CONNECT 2400");
sprintf(modem.connect[19], "CONNECT"); snprintf(modem.connect[19], 31, "CONNECT");
sprintf(modem.error[0], "BUSY"); snprintf(modem.error[0], 21, "BUSY");
sprintf(modem.error[1], "NO CARRIER"); snprintf(modem.error[1], 21, "NO CARRIER");
sprintf(modem.error[2], "NO DIALTONE"); snprintf(modem.error[2], 21, "NO DIALTONE");
sprintf(modem.error[3], "NO ANSWER"); snprintf(modem.error[3], 21, "NO ANSWER");
sprintf(modem.error[4], "RING\\r"); snprintf(modem.error[4], 21, "RING\\r");
sprintf(modem.error[5], "ERROR"); snprintf(modem.error[5], 21, "ERROR");
sprintf(modem.speed, "28800"); snprintf(modem.speed, 16, "28800");
sprintf(modem.reset, "AT\\r"); snprintf(modem.reset, 61, "AT\\r");
modem.available = TRUE; modem.available = TRUE;
fwrite(&modem, sizeof(modem), 1, fil); fwrite(&modem, sizeof(modem), 1, fil);
fclose(fil); fclose(fil);
@ -409,7 +409,7 @@ int EditModemRec(int Area)
working(1, 0, 0); working(1, 0, 0);
IsDoing("Edit Modem"); IsDoing("Edit Modem");
sprintf(mfile, "%s/etc/modem.temp", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/modem.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) == NULL) { if ((fil = fopen(mfile, "r")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
@ -532,7 +532,7 @@ void EditModem(void)
mbse_mvprintw( 5, 4, "5. MODEM TYPES SETUP"); mbse_mvprintw( 5, 4, "5. MODEM TYPES SETUP");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records != 0) { if (records != 0) {
sprintf(temp, "%s/etc/modem.temp", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/modem.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&modemhdr, sizeof(modemhdr), 1, fil); fread(&modemhdr, sizeof(modemhdr), 1, fil);
x = 2; x = 2;
@ -550,7 +550,7 @@ void EditModem(void)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-30s", i, modem.modem); snprintf(temp, 81, "%3d. %-30s", i, modem.modem);
temp[37] = 0; temp[37] = 0;
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -617,11 +617,11 @@ char *PickModem(char *shdr)
for (;;) { for (;;) {
clr_index(); clr_index();
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
sprintf(temp, "%s. MODEM SELECT", shdr); snprintf(temp, 81, "%s. MODEM SELECT", shdr);
mbse_mvprintw(5,3,temp); mbse_mvprintw(5,3,temp);
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records) { if (records) {
sprintf(temp, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&modemhdr, sizeof(modemhdr), 1, fil); fread(&modemhdr, sizeof(modemhdr), 1, fil);
@ -641,7 +641,7 @@ char *PickModem(char *shdr)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-31s", o + i, modem.modem); snprintf(temp, 81, "%3d. %-31s", o + i, modem.modem);
temp[38] = '\0'; temp[38] = '\0';
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -664,14 +664,14 @@ char *PickModem(char *shdr)
o -= 20; o -= 20;
if ((atoi(pick) >= 1) && (atoi(pick) <= records)) { if ((atoi(pick) >= 1) && (atoi(pick) <= records)) {
sprintf(temp, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
offset = modemhdr.hdrsize + ((atoi(pick) - 1) * modemhdr.recsize); offset = modemhdr.hdrsize + ((atoi(pick) - 1) * modemhdr.recsize);
fseek(fil, offset, SEEK_SET); fseek(fil, offset, SEEK_SET);
fread(&modem, modemhdr.recsize, 1, fil); fread(&modem, modemhdr.recsize, 1, fil);
fclose(fil); fclose(fil);
if (modem.available) { if (modem.available) {
sprintf(buf, "%s", modem.modem); snprintf(buf, 31, "%s", modem.modem);
return buf; return buf;
} }
} }
@ -687,7 +687,7 @@ int modem_doc(FILE *fp, FILE *toc, int page)
FILE *ti, *wp, *ip, *mdm; FILE *ti, *wp, *ip, *mdm;
int refs, nr = 0, i, j; int refs, nr = 0, i, j;
sprintf(temp, "%s/etc/modem.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/modem.data", getenv("MBSE_ROOT"));
if ((mdm = fopen(temp, "r")) == NULL) if ((mdm = fopen(temp, "r")) == NULL)
return page; return page;
@ -715,7 +715,7 @@ int modem_doc(FILE *fp, FILE *toc, int page)
nr++; nr++;
fprintf(ip, " <TR><TD><A HREF=\"modem_%d.html\">%d</A></TD><TD>%s</TD><TD>%s</TD></TR>\n", fprintf(ip, " <TR><TD><A HREF=\"modem_%d.html\">%d</A></TD><TD>%s</TD><TD>%s</TD></TR>\n",
nr, nr, modem.modem, getboolean(modem.available)); nr, nr, modem.modem, getboolean(modem.available));
sprintf(temp, "modem_%d.html", nr); snprintf(temp, 81, "modem_%d.html", nr);
if ((wp = open_webdoc(temp, (char *)"Modem", modem.modem))) { if ((wp = open_webdoc(temp, (char *)"Modem", modem.modem))) {
fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"modem.html\">Back</A>\n"); fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"modem.html\">Back</A>\n");
fprintf(wp, "<P>\n"); fprintf(wp, "<P>\n");
@ -725,7 +725,7 @@ int modem_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Modem type", modem.modem); add_webtable(wp, (char *)"Modem type", modem.modem);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
if (strlen(modem.init[i])) { if (strlen(modem.init[i])) {
sprintf(temp, "Init string %d", i+1); snprintf(temp, 81, "Init string %d", i+1);
add_webtable(wp, temp, modem.init[i]); add_webtable(wp, temp, modem.init[i]);
} }
add_webtable(wp, (char *)"OK string", modem.ok); add_webtable(wp, (char *)"OK string", modem.ok);
@ -748,7 +748,7 @@ int modem_doc(FILE *fp, FILE *toc, int page)
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>TTY Lines Reference</H3>\n"); fprintf(wp, "<H3>TTY Lines Reference</H3>\n");
refs = 0; refs = 0;
sprintf(temp, "%s/etc/ttyinfo.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/ttyinfo.data", getenv("MBSE_ROOT"));
if ((ti = fopen(temp, "r"))) { if ((ti = fopen(temp, "r"))) {
fread(&ttyinfohdr, sizeof(ttyinfohdr), 1, ti); fread(&ttyinfohdr, sizeof(ttyinfohdr), 1, ti);
fseek(ti, 0, SEEK_SET); fseek(ti, 0, SEEK_SET);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Newfiles Setup * Purpose ...............: Newfiles Setup
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2004 * Copyright (C) 1997-2005
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -55,7 +55,7 @@ int CountNewfiles(void)
char ffile[PATH_MAX], group[13]; char ffile[PATH_MAX], group[13];
int count, i; int count, i;
sprintf(ffile, "%s/etc/newfiles.data", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "r")) == NULL) { if ((fil = fopen(ffile, "r")) == NULL) {
if ((fil = fopen(ffile, "a+")) != NULL) { if ((fil = fopen(ffile, "a+")) != NULL) {
Syslog('+', "Created new %s", ffile); Syslog('+', "Created new %s", ffile);
@ -65,17 +65,18 @@ int CountNewfiles(void)
fwrite(&newfileshdr, sizeof(newfileshdr), 1, fil); fwrite(&newfileshdr, sizeof(newfileshdr), 1, fil);
memset(&newfiles, 0, sizeof(newfiles)); memset(&newfiles, 0, sizeof(newfiles));
sprintf(newfiles.Comment, "General newfiles announce"); snprintf(newfiles.Comment, 56, "General newfiles announce");
sprintf(newfiles.Area, "%s/var/mail/local/users", getenv("MBSE_ROOT")); snprintf(newfiles.Area, 51, "%s/var/mail/local/users", getenv("MBSE_ROOT"));
sprintf(newfiles.Origin, "%s", CFG.origin); snprintf(newfiles.Origin, 51, "%s", CFG.origin);
sprintf(newfiles.From, "Sysop"); snprintf(newfiles.From, 36, "Sysop");
sprintf(newfiles.Too, "All"); snprintf(newfiles.Too, 36, "All");
sprintf(newfiles.Subject, "New files found"); snprintf(newfiles.Subject, 61, "New files found");
snprintf(newfiles.Template, 15, "newfiles");
newfiles.Language = 'E'; newfiles.Language = 'E';
newfiles.Active = TRUE; newfiles.Active = TRUE;
newfiles.HiAscii = TRUE; newfiles.HiAscii = TRUE;
fwrite(&newfiles, sizeof(newfiles), 1, fil); fwrite(&newfiles, sizeof(newfiles), 1, fil);
sprintf(group, "LOCAL"); snprintf(group, 13, "LOCAL");
fwrite(&group, 13, 1, fil); fwrite(&group, 13, 1, fil);
memset(&group, 0, sizeof(group)); memset(&group, 0, sizeof(group));
for (i = 1; i < CFG.new_groups; i++) for (i = 1; i < CFG.new_groups; i++)
@ -111,8 +112,8 @@ int OpenNewfiles(void)
long oldgroup; long oldgroup;
char group[13]; char group[13];
sprintf(fnin, "%s/etc/newfiles.data", getenv("MBSE_ROOT")); snprintf(fnin, PATH_MAX, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
sprintf(fnout, "%s/etc/newfiles.temp", getenv("MBSE_ROOT")); snprintf(fnout, PATH_MAX, "%s/etc/newfiles.temp", getenv("MBSE_ROOT"));
if ((fin = fopen(fnin, "r")) != NULL) { if ((fin = fopen(fnin, "r")) != NULL) {
if ((fout = fopen(fnout, "w")) != NULL) { if ((fout = fopen(fnout, "w")) != NULL) {
fread(&newfileshdr, sizeof(newfileshdr), 1, fin); fread(&newfileshdr, sizeof(newfileshdr), 1, fin);
@ -146,7 +147,7 @@ int OpenNewfiles(void)
memset(&newfiles, 0, sizeof(newfiles)); memset(&newfiles, 0, sizeof(newfiles));
while (fread(&newfiles, oldsize, 1, fin) == 1) { while (fread(&newfiles, oldsize, 1, fin) == 1) {
if (!strlen(newfiles.Template)) { if (!strlen(newfiles.Template)) {
sprintf(newfiles.Template, "newfiles"); snprintf(newfiles.Template, 15, "newfiles");
NewUpdated = 1; NewUpdated = 1;
} }
fwrite(&newfiles, sizeof(newfiles), 1, fout); fwrite(&newfiles, sizeof(newfiles), 1, fout);
@ -187,8 +188,8 @@ void CloseNewfiles(int force)
st_list *new = NULL, *tmp; st_list *new = NULL, *tmp;
int i; int i;
sprintf(fin, "%s/etc/newfiles.data", getenv("MBSE_ROOT")); snprintf(fin, PATH_MAX, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
sprintf(fout,"%s/etc/newfiles.temp", getenv("MBSE_ROOT")); snprintf(fout, PATH_MAX, "%s/etc/newfiles.temp", getenv("MBSE_ROOT"));
if (NewUpdated == 1) { if (NewUpdated == 1) {
if (force || (yes_no((char *)"Database is changed, save changes") == 1)) { if (force || (yes_no((char *)"Database is changed, save changes") == 1)) {
@ -239,15 +240,15 @@ int AppendNewfiles(void)
char ffile[PATH_MAX], group[13]; char ffile[PATH_MAX], group[13];
int i; int i;
sprintf(ffile, "%s/etc/newfiles.temp", getenv("MBSE_ROOT")); snprintf(ffile, PATH_MAX, "%s/etc/newfiles.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(ffile, "a")) != NULL) { if ((fil = fopen(ffile, "a")) != NULL) {
memset(&newfiles, 0, sizeof(newfiles)); memset(&newfiles, 0, sizeof(newfiles));
/* /*
* Fill in default values * Fill in default values
*/ */
sprintf(newfiles.From, "%s", CFG.sysop_name); snprintf(newfiles.From, 36, "%s", CFG.sysop_name);
newfiles.Language = 'E'; newfiles.Language = 'E';
sprintf(newfiles.Template, "newfiles"); snprintf(newfiles.Template, 15, "newfiles");
strncpy(newfiles.Origin, CFG.origin, 50); strncpy(newfiles.Origin, CFG.origin, 50);
fwrite(&newfiles, sizeof(newfiles), 1, fil); fwrite(&newfiles, sizeof(newfiles), 1, fil);
memset(&group, 0, 13); memset(&group, 0, 13);
@ -302,7 +303,7 @@ int EditNewRec(int Area)
working(1, 0, 0); working(1, 0, 0);
IsDoing("Edit Newfiles"); IsDoing("Edit Newfiles");
sprintf(mfile, "%s/etc/ngroups.data", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/ngroups.data", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) != NULL) { if ((fil = fopen(mfile, "r")) != NULL) {
fread(&ngrouphdr, sizeof(ngrouphdr), 1, fil); fread(&ngrouphdr, sizeof(ngrouphdr), 1, fil);
@ -313,7 +314,7 @@ int EditNewRec(int Area)
sort_grlist(&fgr); sort_grlist(&fgr);
} }
sprintf(mfile, "%s/etc/newfiles.temp", getenv("MBSE_ROOT")); snprintf(mfile, PATH_MAX, "%s/etc/newfiles.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) == NULL) { if ((fil = fopen(mfile, "r")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
tidy_grlist(&fgr); tidy_grlist(&fgr);
@ -353,7 +354,7 @@ int EditNewRec(int Area)
show_str( 10,18,35, newfiles.From); show_str( 10,18,35, newfiles.From);
show_str( 11,18,35, newfiles.Too); show_str( 11,18,35, newfiles.Too);
show_str( 12,18,60, newfiles.Subject); show_str( 12,18,60, newfiles.Subject);
sprintf(temp1, "%c", newfiles.Language); snprintf(temp1, 2, "%c", newfiles.Language);
show_str( 13,18,2, temp1); show_str( 13,18,2, temp1);
show_str( 14,18,14, newfiles.Template); show_str( 14,18,14, newfiles.Template);
show_str( 15,18,35, aka2str(newfiles.UseAka)); show_str( 15,18,35, aka2str(newfiles.UseAka));
@ -386,7 +387,7 @@ int EditNewRec(int Area)
if (tmp->tagged) { if (tmp->tagged) {
i++; i++;
memset(&group, 0, 13); memset(&group, 0, 13);
sprintf(group, "%s", tmp->group); snprintf(group, 13, "%s", tmp->group);
fwrite(&group, 13, 1, fil); fwrite(&group, 13, 1, fil);
} }
@ -462,7 +463,7 @@ void EditNewfiles(void)
mbse_mvprintw( 5, 4, "12. NEWFILES REPORTS"); mbse_mvprintw( 5, 4, "12. NEWFILES REPORTS");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
if (records != 0) { if (records != 0) {
sprintf(temp, "%s/etc/newfiles.temp", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/newfiles.temp", getenv("MBSE_ROOT"));
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
fread(&newfileshdr, sizeof(newfileshdr), 1, fil); fread(&newfileshdr, sizeof(newfileshdr), 1, fil);
@ -482,7 +483,7 @@ void EditNewfiles(void)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
else else
set_color(LIGHTBLUE, BLACK); set_color(LIGHTBLUE, BLACK);
sprintf(temp, "%3d. %-32s", o + i, newfiles.Comment); snprintf(temp, 81, "%3d. %-32s", o + i, newfiles.Comment);
temp[37] = 0; temp[37] = 0;
mbse_mvprintw(y, x, temp); mbse_mvprintw(y, x, temp);
y++; y++;
@ -543,7 +544,7 @@ int new_doc(FILE *fp, FILE *toc, int page)
FILE *wp, *ip, *no; FILE *wp, *ip, *no;
int groups, i, j, nr = 0; int groups, i, j, nr = 0;
sprintf(temp, "%s/etc/newfiles.data", getenv("MBSE_ROOT")); snprintf(temp, PATH_MAX, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
if ((no = fopen(temp, "r")) == NULL) if ((no = fopen(temp, "r")) == NULL)
return page; return page;
@ -566,7 +567,7 @@ int new_doc(FILE *fp, FILE *toc, int page)
j = 0; j = 0;
} }
nr++; nr++;
sprintf(temp, "newfiles_%d.html", nr); snprintf(temp, 81, "newfiles_%d.html", nr);
fprintf(ip, " <LI><A HREF=\"%s\">Report %d</A> %s</LI>\n", temp, nr, newfiles.Comment); fprintf(ip, " <LI><A HREF=\"%s\">Report %d</A> %s</LI>\n", temp, nr, newfiles.Comment);
if ((wp = open_webdoc(temp, (char *)"Newfiles report", newfiles.Comment))) { if ((wp = open_webdoc(temp, (char *)"Newfiles report", newfiles.Comment))) {
fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"newfiles.html\">Back</A>\n"); fprintf(wp, "<A HREF=\"index.html\">Main</A>&nbsp;<A HREF=\"newfiles.html\">Back</A>\n");
@ -580,7 +581,7 @@ int new_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"From name", newfiles.From); add_webtable(wp, (char *)"From name", newfiles.From);
add_webtable(wp, (char *)"To name", newfiles.Too); add_webtable(wp, (char *)"To name", newfiles.Too);
add_webtable(wp, (char *)"Subject", newfiles.Subject); add_webtable(wp, (char *)"Subject", newfiles.Subject);
sprintf(temp, "%c", newfiles.Language); snprintf(temp, 81, "%c", newfiles.Language);
add_webtable(wp, (char *)"Language", temp); add_webtable(wp, (char *)"Language", temp);
add_webtable(wp, (char *)"Aka to use", aka2str(newfiles.UseAka)); add_webtable(wp, (char *)"Aka to use", aka2str(newfiles.UseAka));
add_webtable(wp, (char *)"Active", getboolean(newfiles.Active)); add_webtable(wp, (char *)"Active", getboolean(newfiles.Active));