From owner-freebsd-bugs Thu Jan 18 11:20:22 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 6833937B400 for ; Thu, 18 Jan 2001 11:20:02 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f0IJK2p70794; Thu, 18 Jan 2001 11:20:02 -0800 (PST) (envelope-from gnats) Received: from boco.fee.vutbr.cz (boco.fee.vutbr.cz [147.229.9.11]) by hub.freebsd.org (Postfix) with ESMTP id 4485737B400 for ; 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 ; 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 X-Send-Pr-Version: 3.2 Subject: kern/24437: syscons - MOUSE_MOUSECHAR fix Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 24437 >Category: kern >Synopsis: syscons - MOUSE_MOUSECHAR fix >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jan 18 11:20:02 PST 2001 >Closed-Date: >Last-Modified: >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: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message