Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/wscons Avoid overflow with too many ';' (David Leadb...
details: https://anonhg.NetBSD.org/src/rev/7b9ac69bceb7
branches: trunk
changeset: 377542:7b9ac69bceb7
user: christos <christos%NetBSD.org@localhost>
date: Sun Jul 16 17:43:50 2023 +0000
description:
Avoid overflow with too many ';' (David Leadbeater)
Prefix all messages with the method name
diffstat:
sys/dev/wscons/wsemul_vt100.c | 62 ++++++++++++++++++++++--------------------
1 files changed, 33 insertions(+), 29 deletions(-)
diffs (215 lines):
diff -r 0af4e4f529d5 -r 7b9ac69bceb7 sys/dev/wscons/wsemul_vt100.c
--- a/sys/dev/wscons/wsemul_vt100.c Sun Jul 16 10:36:21 2023 +0000
+++ b/sys/dev/wscons/wsemul_vt100.c Sun Jul 16 17:43:50 2023 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: wsemul_vt100.c,v 1.50 2023/02/23 02:48:06 riastradh Exp $ */
+/* $NetBSD: wsemul_vt100.c,v 1.51 2023/07/16 17:43:50 christos Exp $ */
/*
* Copyright (c) 1998
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wsemul_vt100.c,v 1.50 2023/02/23 02:48:06 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wsemul_vt100.c,v 1.51 2023/07/16 17:43:50 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_wsmsgattrs.h"
@@ -628,7 +628,7 @@ wsemul_vt100_output_esc(struct wsemul_vt
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC%c unknown\n", c);
+ printf("%s: ESC%c unknown\n", __func__, c);
#endif
break;
}
@@ -659,7 +659,8 @@ wsemul_vt100_output_scs94(struct wsemul_
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC%c%c unknown\n", edp->designating + '(', c);
+ printf("%s: ESC%c%c unknown\n", __func__,
+ edp->designating + '(', c);
#endif
break;
}
@@ -676,7 +677,8 @@ wsemul_vt100_output_scs94_percent(struct
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC%c%%%c unknown\n", edp->designating + '(', c);
+ printf("%s: ESC%c%%%c unknown\n",
+ __func__, edp->designating + '(', c);
#endif
break;
}
@@ -728,7 +730,8 @@ setnrc:
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC%c%c unknown\n", edp->designating + '-' - 1, c);
+ printf("%s: ESC%c%c unknown\n",
+ __func__, edp->designating + '-' - 1, c);
#endif
break;
}
@@ -744,7 +747,8 @@ wsemul_vt100_output_scs96_percent(struct
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC%c%%%c unknown\n", edp->designating + '-', c);
+ printf("%s: ESC%c%%%c unknown\n",
+ __func__, edp->designating + '-', c);
#endif
break;
}
@@ -759,12 +763,12 @@ wsemul_vt100_output_esc_spc(struct wsemu
case 'F': /* 7-bit controls */
case 'G': /* 8-bit controls */
#ifdef VT100_PRINTNOTIMPL
- printf("ESC<SPC>%c ignored\n", c);
+ printf("%s: ESC<SPC>%c ignored\n", __func__, c);
#endif
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC<SPC>%c unknown\n", c);
+ printf("%s: ESC<SPC>%c unknown\n", __func__, c);
#endif
break;
}
@@ -807,17 +811,16 @@ wsemul_vt100_output_dcs(struct wsemul_vt
vd->args[vd->nargs] = (vd->args[vd->nargs] * 10) +
(c - '0');
break;
- case ';': /* argument terminator */
- vd->nargs++;
- break;
default:
vd->nargs++;
if (vd->nargs > VT100_EMUL_NARGS) {
#ifdef VT100_DEBUG
- printf("vt100: too many arguments\n");
+ printf("%s: too many arguments\n", __func__);
#endif
vd->nargs = VT100_EMUL_NARGS;
}
+ if (c == ';') /* argument terminator */
+ break;
switch (c) {
case '$':
return VT100_EMUL_STATE_DCS_DOLLAR;
@@ -826,12 +829,13 @@ wsemul_vt100_output_dcs(struct wsemul_vt
/* 'u' must follow - need another state */
case '|': /* DECUDK program F6..F20 */
#ifdef VT100_PRINTNOTIMPL
- printf("DCS%c ignored\n", c);
+ printf("%s: DCS%c ignored\n", __func__, c);
#endif
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("DCS%c (%d, %d) unknown\n", c, ARG(vd, 0), ARG(vd, 1));
+ printf("%s: DCS%c (%d, %d) unknown\n",
+ __func__, c, ARG(vd, 0), ARG(vd, 1));
#endif
break;
}
@@ -850,7 +854,7 @@ wsemul_vt100_output_dcs_dollar(struct ws
case 'p': /* DECRSTS terminal state restore */
case 'q': /* DECRQSS control function request */
#ifdef VT100_PRINTNOTIMPL
- printf("DCS$%c ignored\n", c);
+ printf("%s: DCS$%c ignored\n", __func__, c);
#endif
break;
case 't': /* DECRSPS restore presentation state */
@@ -859,7 +863,7 @@ wsemul_vt100_output_dcs_dollar(struct ws
break;
case 1: /* cursor information restore */
#ifdef VT100_PRINTNOTIMPL
- printf("DCS1$t ignored\n");
+ printf("%s: DCS1$t ignored\n", __func__);
#endif
break;
case 2: /* tab stop restore */
@@ -868,14 +872,15 @@ wsemul_vt100_output_dcs_dollar(struct ws
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("DCS%d$t unknown\n", ARG(vd, 0));
+ printf("%s: DCS%d$t unknown\n", __func__, ARG(vd, 0));
#endif
break;
}
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("DCS$%c (%d, %d) unknown\n", c, ARG(vd, 0), ARG(vd, 1));
+ printf("%s: DCS$%c (%d, %d) unknown\n",
+ __func__, c, ARG(vd, 0), ARG(vd, 1));
#endif
break;
}
@@ -931,7 +936,7 @@ wsemul_vt100_output_esc_hash(struct wsem
break;
default:
#ifdef VT100_PRINTUNKNOWN
- printf("ESC#%c unknown\n", c);
+ printf("%s: ESC#%c unknown\n", __func__, c);
#endif
break;
}
@@ -952,9 +957,6 @@ wsemul_vt100_output_csi(struct wsemul_vt
vd->args[vd->nargs] = (vd->args[vd->nargs] * 10) +
(c - '0');
break;
- case ';': /* argument terminator */
- vd->nargs++;
- break;
case '?': /* DEC specific */
case '>': /* DA query */
vd->modif1 = c;
@@ -965,14 +967,16 @@ wsemul_vt100_output_csi(struct wsemul_vt
case '&':
vd->modif2 = c;
break;
- default: /* end of escape sequence */
+ default: /* end of escape sequence, argument terminator */
vd->nargs++;
if (vd->nargs > VT100_EMUL_NARGS) {
#ifdef VT100_DEBUG
- printf("vt100: too many arguments\n");
+ printf("%s: too many arguments\n", __func__);
#endif
vd->nargs = VT100_EMUL_NARGS;
}
+ if (c == ';') /* argument terminator */
+ break;
wsemul_vt100_handle_csi(vd, c);
return VT100_EMUL_STATE_NORMAL;
}
@@ -1048,8 +1052,8 @@ wsemul_vt100_setmsgattrs(void *cookie, c
__USE(error);
#else
if (error)
- printf("vt100: failed to allocate attribute for default "
- "messages\n");
+ printf("%s: failed to allocate attribute for default "
+ "messages\n", __func__);
else
#endif
{
@@ -1077,8 +1081,8 @@ wsemul_vt100_setmsgattrs(void *cookie, c
&tmp);
#ifdef VT100_DEBUG
if (error)
- printf("vt100: failed to allocate attribute for kernel "
- "messages\n");
+ printf("%s: failed to allocate attribute for kernel "
+ "messages\n", __func__);
else
#endif
{
Home |
Main Index |
Thread Index |
Old Index