diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2011-01-21 04:40:11 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2011-01-21 05:02:19 +0200 |
commit | 1522d6568002afa27ee7a3280b3166f7ecb02f06 (patch) | |
tree | 12e1a8f9da42f59e0078de6113228e5031e024c2 /src | |
parent | 80caa32b6f0c0a774c8334295ee71b658acff630 (diff) | |
download | bluez-1522d6568002afa27ee7a3280b3166f7ecb02f06.tar.gz |
Use an unsigned integer for representing the PIN length
The value 0 is not allowed by the HCI spec so it can be used to denote
"not applicable" or "unknown". Also, the management interface will use
an unsigned integer for the PIN length so mirroring that in the core
daemon code makes sense. This patch also takes care of handling
previously stored -1 values and converts them to 0 whenever they are
detected.
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 6 | ||||
-rw-r--r-- | src/adapter.h | 2 | ||||
-rw-r--r-- | src/event.c | 2 | ||||
-rw-r--r-- | src/event.h | 2 | ||||
-rw-r--r-- | src/storage.c | 2 |
5 files changed, 10 insertions, 4 deletions
diff --git a/src/adapter.c b/src/adapter.c index ab4791c6..3f128844 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1975,6 +1975,7 @@ static struct link_key_info *get_key_info(const char *addr, const char *value) { struct link_key_info *info; char tmp[3]; + long int l; int i; if (strlen(value) < 36) { @@ -1997,7 +1998,10 @@ static struct link_key_info *get_key_info(const char *addr, const char *value) info->type = (uint8_t) strtol(tmp, NULL, 10); memcpy(tmp, value + 35, 2); - info->pin_len = strtol(tmp, NULL, 10); + l = strtol(tmp, NULL, 10); + if (l < 0) + l = 0; + info->pin_len = l; return info; } diff --git a/src/adapter.h b/src/adapter.h index b66be9a8..83965692 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -69,7 +69,7 @@ struct link_key_info { bdaddr_t bdaddr; unsigned char key[16]; uint8_t type; - int pin_len; + uint8_t pin_len; }; struct remote_dev_info { diff --git a/src/event.c b/src/event.c index 5d0bf6d0..00b9ad7e 100644 --- a/src/event.c +++ b/src/event.c @@ -695,7 +695,7 @@ proceed: int btd_event_link_key_notify(bdaddr_t *local, bdaddr_t *peer, uint8_t *key, uint8_t key_type, - int pin_length, uint8_t old_key_type) + uint8_t pin_length, uint8_t old_key_type) { struct btd_device *device; struct btd_adapter *adapter; diff --git a/src/event.h b/src/event.h index 66dd279c..941902a9 100644 --- a/src/event.h +++ b/src/event.h @@ -45,4 +45,4 @@ int btd_event_user_passkey(bdaddr_t *sba, bdaddr_t *dba); int btd_event_user_notify(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey); int btd_event_link_key_notify(bdaddr_t *local, bdaddr_t *peer, uint8_t *key, uint8_t key_type, - int pin_length, uint8_t old_key_type); + uint8_t pin_length, uint8_t old_key_type); diff --git a/src/storage.c b/src/storage.c index 1c6ced48..35e1ba29 100644 --- a/src/storage.c +++ b/src/storage.c @@ -676,6 +676,8 @@ int read_pin_length(bdaddr_t *local, bdaddr_t *peer) } len = atoi(str + 35); + if (len < 0) + len = 0; free(str); |