Re: Off by ones in wsemul_vt100_subr.c

2023-01-09 Thread Christos Zoulas
In article ,
Crystal Kolipe   wrote:
>The attached patch fixes a couple of off-by-ones in the wscons code.
>
>WSEMUL_VT_ID1 and WSEMUL_VT_ID2 are string constants, and sizeof returns the
>length of the string _plus_ the 0x00 terminator.  This size is then supplied
>to wsdisplay_emulinput, which expects to be passed just the number of
>printable characters.
>
>--- sys/dev/wscons/wsemul_vt100_subr.c.dist2018-12-05 22:42:20.0 
>-0300
>+++ sys/dev/wscons/wsemul_vt100_subr.c 2023-01-08 19:25:52.747978285 -0300
>@@ -195,7 +195,7 @@
>   switch (A3(edp->modif1, edp->modif2, c)) {
>   case A3('>', '\0', 'c'): /* DA secondary */
>   wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID2,
>-  sizeof(WSEMUL_VT_ID2));
>+  sizeof(WSEMUL_VT_ID2)-1);
>   break;
> 
>   case A3('\0', '\0', 'J'): /* ED selective erase in display */
>@@ -452,7 +452,7 @@
>   case 'c': /* DA primary */
>   if (ARG(edp, 0) == 0)
>   wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID1,
>-  sizeof(WSEMUL_VT_ID1));
>+  sizeof(WSEMUL_VT_ID1)-1);
>   break;
>   case 'g': /* TBC */
>   KASSERT(edp->tabs != 0);
>

Committed, thanks!

christos



Off by ones in wsemul_vt100_subr.c

2023-01-08 Thread Crystal Kolipe
The attached patch fixes a couple of off-by-ones in the wscons code.

WSEMUL_VT_ID1 and WSEMUL_VT_ID2 are string constants, and sizeof returns the
length of the string _plus_ the 0x00 terminator.  This size is then supplied
to wsdisplay_emulinput, which expects to be passed just the number of
printable characters.

--- sys/dev/wscons/wsemul_vt100_subr.c.dist 2018-12-05 22:42:20.0 
-0300
+++ sys/dev/wscons/wsemul_vt100_subr.c  2023-01-08 19:25:52.747978285 -0300
@@ -195,7 +195,7 @@
switch (A3(edp->modif1, edp->modif2, c)) {
case A3('>', '\0', 'c'): /* DA secondary */
wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID2,
-   sizeof(WSEMUL_VT_ID2));
+   sizeof(WSEMUL_VT_ID2)-1);
break;
 
case A3('\0', '\0', 'J'): /* ED selective erase in display */
@@ -452,7 +452,7 @@
case 'c': /* DA primary */
if (ARG(edp, 0) == 0)
wsdisplay_emulinput(edp->cbcookie, WSEMUL_VT_ID1,
-   sizeof(WSEMUL_VT_ID1));
+   sizeof(WSEMUL_VT_ID1)-1);
break;
case 'g': /* TBC */
KASSERT(edp->tabs != 0);