[gpm]gpm 1.20.0 - bug in vc number detection
Jakub Bogusz
qboosh@pld.org.pl
Wed, 15 May 2002 22:27:53 +0200
[note: I am not subscriber of gpm list, so please Cc: to me when you answer]
Hello,
I've just found a bug in vc detection in Gpm_Open().
In Gpm_Open() (liblow.c) there is:
if(strncmp(tty,consolename,strlen(consolename)-1)
|| !isdigit(tty[strlen(consolename)-1])) {
gpm_report(GPM_PR_ERR,"strncmp/isdigit/consolename failed");
goto err;
}
conn->vc=atoi(&tty[strlen(consolename)]);
Note that consolename[strlen(consolename)] points at char just _after_ 0
in "/dev/tty0" or "/dev/vc/0" string. So tty[strlen(consolename)] points
to \0 if console number fits in one digit, or to second digit of console
number (the first is more common). In the first situation vc==0, so gpm
tries to open /dev/tty0, which can fail if current user doesn't own it.
Fix is simple:
--- gpm-1.20.0/src/liblow.c.orig Sat Feb 23 16:42:23 2002
+++ gpm-1.20.0/src/liblow.c Wed May 15 22:08:34 2002
@@ -262,7 +262,7 @@
goto err;
}
- conn->vc=atoi(&tty[strlen(consolename)]);
+ conn->vc=atoi(&tty[strlen(consolename)-1]);
}
if (gpm_consolefd == -1)
--
Jakub Bogusz http://prioris.mini.pw.edu.pl/~qboosh/
PLD Linux http://www.pld.org.pl/