about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMarc <foxtrot@malloc.me>2022-03-04 13:34:28 +0000
committerMarc <foxtrot@malloc.me>2022-03-04 13:34:28 +0000
commit469a2e5eb9258f1b0ffbc02efd5e3b93499e7192 (patch)
tree2c1ab187164e70d49ef9d48d4ef0337eb71b140e /src
parentb3b8631afd1919ce373939f1b808177850ed1d03 (diff)
downloadlibwifi-469a2e5eb9258f1b0ffbc02efd5e3b93499e7192.tar.gz
libwifi-469a2e5eb9258f1b0ffbc02efd5e3b93499e7192.tar.bz2
libwifi-469a2e5eb9258f1b0ffbc02efd5e3b93499e7192.zip
core: Return error if invalid length is supplied to tag_iterator_init()
Diffstat (limited to 'src')
-rw-r--r--src/libwifi/core/frame/tag_iterator.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libwifi/core/frame/tag_iterator.c b/src/libwifi/core/frame/tag_iterator.c index 0982c95..c17a6d7 100644 --- a/src/libwifi/core/frame/tag_iterator.c +++ b/src/libwifi/core/frame/tag_iterator.c
@@ -19,8 +19,11 @@
19#include <string.h> 19#include <string.h>
20 20
21int libwifi_tag_iterator_init(struct libwifi_tag_iterator *it, const void *tags_start, size_t data_len) { 21int libwifi_tag_iterator_init(struct libwifi_tag_iterator *it, const void *tags_start, size_t data_len) {
22 it->tag_header = (struct libwifi_tag_header *) tags_start; 22 if (data_len <= 0) {
23 return -EINVAL;
24 }
23 25
26 it->tag_header = (struct libwifi_tag_header *) tags_start;
24 it->tag_data = (unsigned char *) tags_start + sizeof(struct libwifi_tag_header); 27 it->tag_data = (unsigned char *) tags_start + sizeof(struct libwifi_tag_header);
25 it->_next_tag_header = (struct libwifi_tag_header *) (it->tag_data + it->tag_header->tag_len); 28 it->_next_tag_header = (struct libwifi_tag_header *) (it->tag_data + it->tag_header->tag_len);
26 it->_frame_end = (unsigned char *) (tags_start) + data_len - 1; 29 it->_frame_end = (unsigned char *) (tags_start) + data_len - 1;