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 | |
| parent | 71da6f84e448a6e08ef252f21e4404d602ef1096 (diff) | |
serial: fixed record handle and channel values validation
| -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;  } | 
