jcs
/subtext
/amendments
/602
ansi: Use snprintf everywhere
jcs made amendment 602 10 months ago
--- ansi.c Tue Mar 14 11:23:30 2023
+++ ansi.c Sat Dec 6 14:56:58 2025
@@ -110,7 +110,8 @@ ansi(struct session *s, ...)
/* these require N args */
case ANSI_DOWN_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dB", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dB",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -120,7 +121,8 @@ ansi(struct session *s, ...)
break;
case ANSI_FORWARD_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dC", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dC",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -130,7 +132,8 @@ ansi(struct session *s, ...)
break;
case ANSI_BACK_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dD", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dD",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -140,7 +143,8 @@ ansi(struct session *s, ...)
break;
case ANSI_UP_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dF", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dF",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -150,7 +154,8 @@ ansi(struct session *s, ...)
break;
case ANSI_INSERT_LINES_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dL", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dL",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -160,7 +165,8 @@ ansi(struct session *s, ...)
break;
case ANSI_DELETE_LINES_N:
if (s->vt100) {
- sprintf(ansi_tmp, "\33[%dM", va_arg(ap, short));
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%dM",
+ va_arg(ap, short));
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
val = va_arg(ap, short);
@@ -175,12 +181,12 @@ ansi(struct session *s, ...)
else {
if (s->vt100) {
/* \e[xG not supported on windows telnet, fake it */
- sprintf(ansi_tmp, "\r\33[%dC", val);
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\r\33[%dC", val);
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
} else if (s->vt52) {
/* go to beginning of line, then move right N times */
strlcat(ansi_out, "\r", sizeof(ansi_buf[0]));
- sprintf(ansi_tmp, "\33C");
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33C");
for (n = 0; n < val; n++)
len = strlcat(ansi_out, ansi_tmp,
sizeof(ansi_buf[0]));
@@ -192,10 +198,11 @@ ansi(struct session *s, ...)
val2 = va_arg(ap, short);
if (s->vt100)
/* line, column */
- sprintf(ansi_tmp, "\33[%d;%dH", val, val2);
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33[%d;%dH", val, val2);
else if (s->vt52)
/* column, line as chr(col)+31,chr(line)+31 */
- sprintf(ansi_tmp, "\33Y%c%c", val2 + 31, val + 31);
+ snprintf(ansi_tmp, sizeof(ansi_tmp), "\33Y%c%c",
+ val2 + 31, val + 31);
len = strlcat(ansi_out, ansi_tmp, sizeof(ansi_buf[0]));
break;