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:
parent
1a0d9324b3
commit
8990b31214
|
@ -117,15 +117,22 @@ TslibEnable (KdPointerInfo *pi)
|
||||||
pi->path = strdup("/dev/input/touchscreen0");
|
pi->path = strdup("/dev/input/touchscreen0");
|
||||||
ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path);
|
ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path);
|
||||||
}
|
}
|
||||||
|
|
||||||
private->tsDev = ts_open(pi->path, 0);
|
private->tsDev = ts_open(pi->path, 0);
|
||||||
private->fd = ts_fd(private->tsDev);
|
if (!private->tsDev) {
|
||||||
if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) {
|
|
||||||
ErrorF("[tslib/TslibEnable] failed to open %s\n", pi->path);
|
ErrorF("[tslib/TslibEnable] failed to open %s\n", pi->path);
|
||||||
if (private->fd >= 0)
|
|
||||||
close(private->fd);
|
|
||||||
return BadAlloc;
|
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);
|
KdRegisterFd(private->fd, TsRead, pi);
|
||||||
|
|
||||||
return Success;
|
return Success;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user