diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-05-07 18:00:05 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-05-07 18:00:05 +0000 |
commit | 500a7637d7eae204fbb74a6602afa3f08a040d17 (patch) | |
tree | 31cb105393121723199e37bfada5d3a55a562464 /serial | |
parent | 71da6f84e448a6e08ef252f21e4404d602ef1096 (diff) |
serial: fixed record handle and channel values validation
Diffstat (limited to 'serial')
-rw-r--r-- | serial/manager.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/serial/manager.c b/serial/manager.c index b16c4f72..30380d9d 100644 --- a/serial/manager.c +++ b/serial/manager.c @@ -98,18 +98,23 @@ static DBusHandlerResult connect_service(DBusConnection *conn, (errno != 0 && val == 0) || (pattern == endptr)) return err_invalid_args(conn, msg, "Invalid pattern"); - if (val < 0x100) { - /* RFCOMM Channel range: 0x00 - 0xff */ - info("Connecting to channel: 0x%x", val); - /* FIXME: Connect */ - } else { - /* Service record handle must be > 0x0000ffff */ + /* Record handle: starts at 0x10000 */ + if (strncasecmp("0x", pattern, 2) == 0) { if (val < 0x10000) return err_invalid_args(conn, msg, "invalid record handle"); /* FIXME: retrieve the record */ + return DBUS_HANDLER_RESULT_HANDLED; } + /* RFCOMM Channel range: 1 - 30 */ + if (val < 1 || val > 30) + return err_invalid_args(conn, msg, + "invalid RFCOMM channel"); + + /* FIXME: Connect */ + info("Connecting to channel: %d", val); + return DBUS_HANDLER_RESULT_HANDLED; } |