diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-01-05 21:06:51 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-01-05 21:06:51 -0800 |
| commit | cdb95a67b1e219426296f44c097aaf5120bc72fe (patch) | |
| tree | 734981545d8b59f6dd1334fb311f6a63668eca8b | |
| parent | ad6cecd573bb45283f016b11733706fb9bdc0b54 (diff) | |
| parent | 047069a6479c3d7eb5cf52fcbf2c8fd1143f931f (diff) | |
| download | android_external_wpa_supplicant_8-cdb95a67b1e219426296f44c097aaf5120bc72fe.tar.gz android_external_wpa_supplicant_8-cdb95a67b1e219426296f44c097aaf5120bc72fe.tar.bz2 android_external_wpa_supplicant_8-cdb95a67b1e219426296f44c097aaf5120bc72fe.zip | |
Merge "P2P: Filter control chars in group client device name similarly to peer" into wlan-service.lnx.1.0-dev.1.0
| -rw-r--r-- | src/p2p/p2p.c | 5 | ||||
| -rw-r--r-- | src/p2p/p2p_i.h | 2 | ||||
| -rw-r--r-- | src/p2p/p2p_parse.c | 30 |
3 files changed, 26 insertions, 11 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index b87ff96b..99bd402a 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -455,8 +455,9 @@ static struct p2p_device * p2p_create_device(struct p2p_data *p2p, static void p2p_copy_client_info(struct p2p_device *dev, struct p2p_client_info *cli) { - os_memcpy(dev->info.device_name, cli->dev_name, cli->dev_name_len); - dev->info.device_name[cli->dev_name_len] = '\0'; + p2p_copy_filter_devname(dev->info.device_name, + sizeof(dev->info.device_name), + cli->dev_name, cli->dev_name_len); dev->info.dev_capab = cli->dev_capab; dev->info.config_methods = cli->config_methods; os_memcpy(dev->info.pri_dev_type, cli->pri_dev_type, 8); diff --git a/src/p2p/p2p_i.h b/src/p2p/p2p_i.h index a1042d23..78e52c93 100644 --- a/src/p2p/p2p_i.h +++ b/src/p2p/p2p_i.h @@ -682,6 +682,8 @@ int p2p_channel_random_social(struct p2p_channels *chans, u8 *op_class, u8 *op_channel); /* p2p_parse.c */ +void p2p_copy_filter_devname(char *dst, size_t dst_len, + const void *src, size_t src_len); int p2p_parse_p2p_ie(const struct wpabuf *buf, struct p2p_message *msg); int p2p_parse_ies(const u8 *data, size_t len, struct p2p_message *msg); int p2p_parse(const u8 *data, size_t len, struct p2p_message *msg); diff --git a/src/p2p/p2p_parse.c b/src/p2p/p2p_parse.c index 980dddf1..afdef853 100644 --- a/src/p2p/p2p_parse.c +++ b/src/p2p/p2p_parse.c @@ -15,11 +15,29 @@ #include "p2p_i.h" +void p2p_copy_filter_devname(char *dst, size_t dst_len, + const void *src, size_t src_len) +{ + size_t i; + + if (src_len >= dst_len) + src_len = dst_len - 1; + os_memcpy(dst, src, src_len); + dst[src_len] = '\0'; + for (i = 0; i < src_len; i++) { + if (dst[i] == '\0') + break; + if (is_ctrl_char(dst[i])) + dst[i] = '_'; + } +} + + static int p2p_parse_attribute(u8 id, const u8 *data, u16 len, struct p2p_message *msg) { const u8 *pos; - size_t i, nlen; + size_t nlen; char devtype[WPS_DEV_TYPE_BUFSIZE]; switch (id) { @@ -156,14 +174,8 @@ static int p2p_parse_attribute(u8 id, const u8 *data, u16 len, (int) (data + len - pos)); return -1; } - os_memcpy(msg->device_name, pos, nlen); - msg->device_name[nlen] = '\0'; - for (i = 0; i < nlen; i++) { - if (msg->device_name[i] == '\0') - break; - if (is_ctrl_char(msg->device_name[i])) - msg->device_name[i] = '_'; - } + p2p_copy_filter_devname(msg->device_name, + sizeof(msg->device_name), pos, nlen); wpa_printf(MSG_DEBUG, "P2P: * Device Info: addr " MACSTR " primary device type %s device name '%s' " "config methods 0x%x", |
