From cejkar@dcse.fee.vutbr.cz  Thu Jan 18 11:14:20 2001
Return-Path: <cejkar@dcse.fee.vutbr.cz>
Received: from boco.fee.vutbr.cz (boco.fee.vutbr.cz [147.229.9.11])
	by hub.freebsd.org (Postfix) with ESMTP id 4485737B400
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 18 Jan 2001 11:14:19 -0800 (PST)
Received: from kazi.dcse.fee.vutbr.cz (kazi.dcse.fee.vutbr.cz [147.229.8.12])
	by boco.fee.vutbr.cz (8.11.2/8.11.2) with ESMTP id f0IJEHo99157
	(using TLSv1/SSLv3 with cipher EDH-RSA-DES-CBC3-SHA (168 bits) verified OK)
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 18 Jan 2001 20:14:17 +0100 (CET)
Received: (from cejkar@localhost)
	by kazi.dcse.fee.vutbr.cz (8.11.0/8.11.0) id f0IJEGZ35527;
	Thu, 18 Jan 2001 20:14:16 +0100 (CET)
Message-Id: <200101181914.f0IJEGZ35527@kazi.dcse.fee.vutbr.cz>
Date: Thu, 18 Jan 2001 20:14:16 +0100 (CET)
From: cejkar@dcse.fee.vutbr.cz
Reply-To: cejkar@dcse.fee.vutbr.cz
To: FreeBSD-gnats-submit@freebsd.org
Subject: syscons - MOUSE_MOUSECHAR fix
X-Send-Pr-Version: 3.2

>Number:         24437
>Category:       kern
>Synopsis:       syscons - MOUSE_MOUSECHAR fix
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    yokota
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jan 18 11:20:02 PST 2001
>Closed-Date:    Fri Jul 20 08:14:55 PDT 2001
>Last-Modified:  Fri Jul 20 08:15:17 PDT 2001
>Originator:     Rudolf Cejka
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
Brno University of Technology, FEE&CS, Czech Republic
>Environment:

	All systems with MOUSE_MOUSECHAR ioctl.

>Description:

	When changing MOUSE_MOUSECHAR over vidcontrol, original characters
	are not restored correcty. Instead, characters 0, 1, 2, and 3
	are loaded in their position: Patch #1, lower change.

	Right values for MOUSE_MOUSECHAR (c) are 0 <= c <= UCHAR_MAX - 3,
	but kernel allows only 0 <= c <= UCHAR_MAX - 5 and vidcontrol
	allows 0 <= c <= UCHAR_MAX. Kernel fix: Patch #1, upper change.
	Vidcontrol fix: Patch #2.

>How-To-Repeat:
>Fix:

$FreeBSD: src/sys/dev/syscons/scmouse.c,v 1.16 2000/10/09 08:08:28 phk Exp $

--- scmouse.c.orig	Thu Jan 18 18:18:32 2001
+++ scmouse.c	Thu Jan 18 19:35:38 2001
@@ -874,13 +874,15 @@
 	    if (mouse->u.mouse_char < 0) {
 		mouse->u.mouse_char = scp->sc->mouse_char;
 	    } else {
-		if (mouse->u.mouse_char >= UCHAR_MAX - 4)
+		if (mouse->u.mouse_char > UCHAR_MAX - 3)
 		    return EINVAL;
 		s = spltty();
 		sc_remove_all_mouse(scp->sc);
 #ifndef SC_NO_FONT_LOADING
 		if (ISTEXTSC(cur_scp) && (cur_scp->font != NULL))
-		    sc_load_font(cur_scp, 0, cur_scp->font_size, cur_scp->font,
+		    sc_load_font(cur_scp, 0, cur_scp->font_size,
+				 cur_scp->font + cur_scp->font_size
+				 * cur_scp->sc->mouse_char,
 				 cur_scp->sc->mouse_char, 4);
 #endif
 		scp->sc->mouse_char = mouse->u.mouse_char;

"$FreeBSD: src/usr.sbin/vidcontrol/vidcontrol.c,v 1.33 2000/10/08 21:34:00 phk Exp $";

--- vidcontrol.c.orig	Thu Jan 18 19:44:17 2001
+++ vidcontrol.c	Thu Jan 18 19:44:31 2001
@@ -415,8 +415,8 @@
 	long l;
 
 	l = strtol(arg, NULL, 0);
-	if ((l < 0) || (l > UCHAR_MAX)) {
-		warnx("argument to -M must be 0 through %d", UCHAR_MAX);
+	if ((l < 0) || (l > UCHAR_MAX - 3)) {
+		warnx("argument to -M must be 0 through %d", UCHAR_MAX - 3);
 		return;
 	}
 	mouse.operation = MOUSE_MOUSECHAR;


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->yokota 
Responsible-Changed-By: johan 
Responsible-Changed-When: Mon Jan 22 13:13:26 PST 2001 
Responsible-Changed-Why:  
Over to sc maintainer. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=24437 

From: Peter Pentchev <roam@orbitel.bg>
To: cejkar@dcse.fee.vutbr.cz
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: kern/24437: syscons - MOUSE_MOUSECHAR fix
Date: Mon, 29 Jan 2001 11:26:49 +0200

 On Thu, Jan 18, 2001 at 08:14:16PM +0100, cejkar@dcse.fee.vutbr.cz wrote:
 > 
 > >Number:         24437
 > >Category:       kern
 > >Synopsis:       syscons - MOUSE_MOUSECHAR fix
 > >Originator:     Rudolf Cejka
 > >Release:        FreeBSD 5.0-CURRENT i386
 > >Organization:
 > Brno University of Technology, FEE&CS, Czech Republic
 > >Environment:
 > 
 > 	All systems with MOUSE_MOUSECHAR ioctl.
 > 
 > >Description:
 > 
 > 	When changing MOUSE_MOUSECHAR over vidcontrol, original characters
 > 	are not restored correcty. Instead, characters 0, 1, 2, and 3
 > 	are loaded in their position: Patch #1, lower change.
 > 
 > 	Right values for MOUSE_MOUSECHAR (c) are 0 <= c <= UCHAR_MAX - 3,
 > 	but kernel allows only 0 <= c <= UCHAR_MAX - 5 and vidcontrol
 > 	allows 0 <= c <= UCHAR_MAX. Kernel fix: Patch #1, upper change.
 > 	Vidcontrol fix: Patch #2.
 
 FWIW, It Works For Me (tm) - been running with this patch for a couple
 of days, and yes, it did get rid of the pesky \002-\005 chars popping
 up every now and then.
 
 G'luck,
 Peter
 
 -- 
 Do you think anybody has ever had *precisely this thought* before?
 
State-Changed-From-To: open->analyzed 
State-Changed-By: ache 
State-Changed-When: Sat Apr 21 07:12:46 PDT 2001 
State-Changed-Why:  
Fix commited into -current 

http://www.freebsd.org/cgi/query-pr.cgi?pr=24437 
State-Changed-From-To: analyzed->closed 
State-Changed-By: yokota 
State-Changed-When: Fri Jul 20 08:14:55 PDT 2001 
State-Changed-Why:  
Fixed by ache. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=24437 
>Unformatted:
