summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2007-05-07 18:00:05 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2007-05-07 18:00:05 +0000
commit500a7637d7eae204fbb74a6602afa3f08a040d17 (patch)
tree31cb105393121723199e37bfada5d3a55a562464
parent71da6f84e448a6e08ef252f21e4404d602ef1096 (diff)
serial: fixed record handle and channel values validation
-rw-r--r--serial/manager.c17
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;
}