AmendHub

Download (as of this amendment):

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;