KDrive: Fix error handlig in tslib driver

If ts_open() fails and return NULL, then next call to ts_fd()
segfaults because of NULL dereference. There is no need to
check output of ts_fd() as ts_open() did this internally.

Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Paulius Zaleckas 2010-10-18 00:02:01 +03:00 committed by Peter Hutterer
parent 1a0d9324b3
commit 8990b31214

View File

@ -117,15 +117,22 @@ TslibEnable (KdPointerInfo *pi)
pi->path = strdup("/dev/input/touchscreen0");
ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path);
}
private->tsDev = ts_open(pi->path, 0);
private->fd = ts_fd(private->tsDev);
if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) {
if (!private->tsDev) {
ErrorF("[tslib/TslibEnable] failed to open %s\n", pi->path);
if (private->fd >= 0)
close(private->fd);
return BadAlloc;
}
if (ts_config(private->tsDev)) {
ErrorF("[tslib/TslibEnable] failed to load configuration\n");
ts_close(private->tsDev);
private->tsDev = NULL;
return BadValue;
}
private->fd = ts_fd(private->tsDev);
KdRegisterFd(private->fd, TsRead, pi);
return Success;