about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-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;