Secured sprintf with snprintf

This commit is contained in:
Michiel Broek 2005-08-29 11:25:38 +00:00
parent 111b2970b5
commit 30fa93a8b2
4 changed files with 52 additions and 52 deletions

View File

@ -352,7 +352,7 @@ void GetstrP(char *sStr, int iMaxLen, int Position)
} else if ((ch > 31 && ch < 127) || traduce(&ch)) {
if (iPos <= iMaxLen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxLen, "%s%c", sStr, ch);
PUTCHAR(ch);
} else {
PUTCHAR('\007');
@ -393,7 +393,7 @@ void GetstrC(char *sStr, int iMaxlen)
if ((ch > 31) && (ch < 127) && (ch != ',')) {
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
PUTCHAR(ch);
} else
PUTCHAR('\007');
@ -433,7 +433,7 @@ void GetstrU(char *sStr, int iMaxlen)
if (isalnum(ch) || (ch == '@') || (ch == '.') || (ch == '-') || (ch == '_')) {
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
PUTCHAR(ch);
} else
PUTCHAR('\007');
@ -474,7 +474,7 @@ void GetPhone(char *sStr, int iMaxlen)
if ((ch >= '0' && ch <= '9') || (ch == '-') || (ch == '+')) {
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
PUTCHAR(ch);
} else
PUTCHAR('\007');
@ -516,7 +516,7 @@ void Getnum(char *sStr, int iMaxlen)
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
PUTCHAR(ch);
} else
PUTCHAR('\007');
@ -563,11 +563,11 @@ void GetDate(char *sStr, int iMaxlen)
if (ch >= '0' && ch <= '9') {
if (iPos < iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
PUTCHAR(ch);
if (iPos == 2 || iPos == 5) {
PUTCHAR('-');
sprintf(sStr, "%s-", sStr);
snprintf(sStr, iMaxlen, "%s-", sStr);
iPos++;
}
} else
@ -628,7 +628,7 @@ void Getname(char *sStr, int iMaxlen)
if (iPos == 1 && CFG.iCapUserName)
ch = toupper(ch);
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
printf("%c", ch);
} else
putchar('\007');
@ -688,7 +688,7 @@ void GetnameNE(char *sStr, int iMaxlen)
if (iPos == 1)
ch = toupper(ch);
sprintf(sStr, "%s%c", sStr, ch);
snprintf(sStr, iMaxlen, "%s%c", sStr, ch);
printf("%c", ch);
} else
putchar('\007');
@ -755,7 +755,7 @@ void Pause()
string = malloc(81);
/* Press (Enter) to continue: */
sprintf(string, "\r%s", (char *) Language(375));
snprintf(string, 81, "\r%s", (char *) Language(375));
colour(CFG.CRColourF, CFG.CRColourB);
PUTSTR(string);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Language functions.
*
*****************************************************************************
* Copyright (C) 1997-2004
* Copyright (C) 1997-2005
*
* Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10
@ -67,7 +67,7 @@ int Keystroke(int lRecord, int Pos)
char temp[30];
memset(&temp, 0, sizeof(temp));
sprintf(temp, "%s", *(mKeystroke + lRecord));
snprintf(temp, 30, "%s", *(mKeystroke + lRecord));
if ((Pos < 0) || (Pos > strlen(temp))) {
WriteError("Keystroke(%d, %d): Range Error", lRecord, Pos);
@ -88,7 +88,7 @@ void Set_Language(int iLanguage)
char *temp;
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 ((pLang = fopen(temp, "rb")) == NULL) {
WriteError("Language: Can't open file: %s", temp);
@ -126,7 +126,7 @@ void InitLanguage()
temp = calloc(PATH_MAX, sizeof(char));
sprintf(temp, "%s/etc/%s", getenv("MBSE_ROOT"), CFG.current_language);
snprintf(temp, PATH_MAX, "%s/etc/%s", getenv("MBSE_ROOT"), CFG.current_language);
if ((pLang = fopen(temp, "rb")) == NULL) {
WriteError("$FATAL: Can't open %s", temp);
ExitClient(MBERR_INIT_ERROR);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Display Last Callers
*
*****************************************************************************
* Copyright (C) 1997-2004
* Copyright (C) 1997-2005
*
* Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10
@ -69,20 +69,20 @@ void LastCallers(char *OpData)
clear();
sprintf(sFileName,"%s/etc/lastcall.data", getenv("MBSE_ROOT"));
snprintf(sFileName, PATH_MAX, "%s/etc/lastcall.data", getenv("MBSE_ROOT"));
if ((pLC = fopen(sFileName,"r")) == NULL)
WriteError("$LastCallers: Can't open %s", sFileName);
else {
fread(&lcallhdr, sizeof(lcallhdr), 1, pLC);
colour(WHITE, BLACK);
/* Todays callers to */
sprintf(Heading, "%s%s", (char *) Language(84), CFG.bbs_name);
snprintf(Heading, 81, "%s%s", (char *) Language(84), CFG.bbs_name);
Center(Heading);
x = strlen(Heading);
for(i = 0; i < x; i++)
sprintf(Underline, "%s%c", Underline, exitinfo.GraphMode ? 196 : 45);
snprintf(Underline, 81, "%s%c", Underline, exitinfo.GraphMode ? 196 : 45);
colour(LIGHTRED, BLACK);
Center(Underline);
@ -101,32 +101,32 @@ void LastCallers(char *OpData)
count++;
colour(WHITE, BLACK);
sprintf(Heading, "%-5d", count);
snprintf(Heading, 81, "%-5d", count);
PUTSTR(Heading);
colour(LIGHTCYAN, BLACK);
if ((strcasecmp(OpData, "/H")) == 0) {
if ((strcmp(lcall.Handle, "") != 0 && *(lcall.Handle) != ' '))
sprintf(Heading, "%-20s", lcall.Handle);
snprintf(Heading, 81, "%-20s", lcall.Handle);
else
sprintf(Heading, "%-20s", lcall.UserName);
snprintf(Heading, 81, "%-20s", lcall.UserName);
} else if (strcasecmp(OpData, "/U") == 0) {
sprintf(Heading, "%-20s", lcall.Name);
snprintf(Heading, 81, "%-20s", lcall.Name);
} else {
sprintf(Heading, "%-20s", lcall.UserName);
snprintf(Heading, 81, "%-20s", lcall.UserName);
}
PUTSTR(Heading);
sprintf(Heading, "%-8s", lcall.Device);
snprintf(Heading, 81, "%-8s", lcall.Device);
pout(LIGHTBLUE, BLACK, Heading);
sprintf(Heading, "%-8s", lcall.TimeOn);
snprintf(Heading, 81, "%-8s", lcall.TimeOn);
pout(LIGHTMAGENTA, BLACK, Heading);
sprintf(Heading, "%-7d", lcall.Calls);
snprintf(Heading, 81, "%-7d", lcall.Calls);
pout(YELLOW, BLACK, Heading);
sprintf(Heading, "%-32s", lcall.Location);
snprintf(Heading, 81, "%-32s", lcall.Location);
pout(LIGHTRED, BLACK, Heading);
Enter(1);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Message line editor.
*
*****************************************************************************
* Copyright (C) 1997-2004
* Copyright (C) 1997-2005
*
* Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10
@ -72,7 +72,7 @@ void Line_Edit_Append()
}
while (TRUE) {
sprintf(msg, "%-2d : ", Line);
snprintf(msg, 41, "%-2d : ", Line);
pout(LIGHTGREEN, BLACK, msg);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
alarm_on();
@ -102,7 +102,7 @@ void Line_Edit_Delete()
while (TRUE) {
Enter(2);
/* Delete starting at line */
sprintf(temp, "%s#(1 - %d): ", (char *) Language(176), (Line - 1) );
snprintf(temp, 81, "%s#(1 - %d): ", (char *) Language(176), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -117,7 +117,7 @@ void Line_Edit_Delete()
if (start > (Line - 1)) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d)", (char *) Language(178), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d)", (char *) Language(178), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
} else
break;
@ -125,7 +125,7 @@ void Line_Edit_Delete()
while (TRUE) {
/* Delete ending at line */
sprintf(temp, "%s# (1 - %d): ", (char *) Language(179), (Line - 1) );
snprintf(temp, 81, "%s# (1 - %d): ", (char *) Language(179), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -141,7 +141,7 @@ void Line_Edit_Delete()
if(end > (Line - 1)) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d)", (char *) Language(179), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d)", (char *) Language(179), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
Enter(2);
} else
@ -179,7 +179,7 @@ void Line_Edit_Edit()
while (TRUE) {
Enter(1);
/* Enter line # to edit */
sprintf(temp, "%s(1 - %d): ", (char *) Language(181), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d): ", (char *) Language(181), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -191,14 +191,14 @@ void Line_Edit_Edit()
if (edit > Line) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d) ", (char *) Language(178), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d) ", (char *) Language(178), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
} else
break;
}
Enter(1);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
PUTSTR(Message[edit]);
@ -227,7 +227,7 @@ void Line_Edit_Insert()
while (TRUE) {
Enter(2);
/* Enter line # to insert text before */
sprintf(temp, "%s(1 - %d): ", (char *) Language(183), (Line - 1));
snprintf(temp, 81, "%s(1 - %d): ", (char *) Language(183), (Line - 1));
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -242,7 +242,7 @@ void Line_Edit_Insert()
if (start > (Line - 1)) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d)", (char *) Language(178), (Line - 1));
snprintf(temp, 81, "%s(1 - %d)", (char *) Language(178), (Line - 1));
pout(LIGHTGREEN, BLACK, temp);
} else
break;
@ -250,7 +250,7 @@ void Line_Edit_Insert()
Enter(1);
j = start;
sprintf(temp, "%-2d : ", start);
snprintf(temp, 81, "%-2d : ", start);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
GetstrC(temp, 80);
@ -283,7 +283,7 @@ void Line_Edit_Replace()
while (TRUE) {
Enter(2);
/* Enter line # to replace */
sprintf(temp, "%s(1 - %d): ", (char *) Language(185), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d): ", (char *) Language(185), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -295,7 +295,7 @@ void Line_Edit_Replace()
if (edit > Line) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d) ", (char *) Language(178), (Line - 1));
snprintf(temp, 81, "%s(1 - %d) ", (char *) Language(178), (Line - 1));
pout(LIGHTGREEN, BLACK, temp);
} else
break;
@ -306,13 +306,13 @@ void Line_Edit_Replace()
pout(WHITE, BLACK, (char *) Language(186));
Enter(1);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
PUTSTR(Message[edit]);
Enter(2);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
GetstrC(temp, 80);
@ -329,7 +329,7 @@ void Line_Edit_Replace()
pout(WHITE, BLACK, (char *) Language(188));
Enter(1);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
@ -348,7 +348,7 @@ void Line_Edit_Text()
while (TRUE) {
Enter(2);
/* Enter line # to edit */
sprintf(temp, "%s(1 - %d): ", (char *) Language(194), (Line - 1));
snprintf(temp, 81, "%s(1 - %d): ", (char *) Language(194), (Line - 1));
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(temp, 80);
@ -360,7 +360,7 @@ void Line_Edit_Text()
if (edit > Line) {
Enter(1);
/* Please enter a number in the range of */
sprintf(temp, "%s(1 - %d) ", (char *) Language(178), (Line - 1) );
snprintf(temp, 81, "%s(1 - %d) ", (char *) Language(178), (Line - 1) );
pout(LIGHTGREEN, BLACK, temp);
} else
break;
@ -370,7 +370,7 @@ void Line_Edit_Text()
/* Line reads: */
pout(WHITE, BLACK, (char *) Language(186));
Enter(1);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
PUTSTR(Message[edit]);
@ -391,7 +391,7 @@ void Line_Edit_Text()
/* Line now reads: */
pout(WHITE, BLACK, (char *) Language(197));
Enter(1);
sprintf(temp, "%d : ", edit);
snprintf(temp, 81, "%d : ", edit);
pout(LIGHTGREEN, BLACK, temp);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
PUTSTR(Message[edit]);
@ -407,7 +407,7 @@ void Line_Edit_Center()
Enter(2);
/* Enter line # to center */
sprintf(temp, "%s(1 - %d): ", (char *) Language(203), (Line - 1));
snprintf(temp, 81, "%s(1 - %d): ", (char *) Language(203), (Line - 1));
pout(WHITE, BLACK, temp);
GetstrC(temp, 80);
if ((strcmp(temp, "")) == 0)
@ -462,7 +462,7 @@ int Line_Edit()
while (TRUE) {
Enter(1);
/* Functions available: (Current Message: */ /* Lines) */
sprintf(msg, "%s%d %s", (char *) Language(167), (Line - 1), (char *) Language(168));
snprintf(msg, 81, "%s%d %s", (char *) Language(167), (Line - 1), (char *) Language(168));
pout(YELLOW, BLACK, msg);
Enter(2);
@ -482,7 +482,7 @@ int Line_Edit()
pout(LIGHTCYAN, BLACK, (char *) Language(172));
Enter(2);
sprintf(msg, "%s [", (char *) Language(173));
snprintf(msg, 81, "%s [", (char *) Language(173));
pout(WHITE, BLACK, msg);
for (i = 0; i < 10; i++)
PUTCHAR(Keystroke(172, i));
@ -516,7 +516,7 @@ int Line_Edit()
Enter(2);
for (i = 1; i < Line; i++) {
sprintf(msg, "%d: ", i);
snprintf(msg, 81, "%d: ", i);
pout(LIGHTGREEN, BLACK, msg);
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
PUTSTR(Message[i]);