aboutsummaryrefslogtreecommitdiffstats
path: root/lib/edi/common.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2020-03-11 12:07:49 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2020-03-11 12:07:49 +0100
commitc7795fcd30a6649eede1abac18bcfbfd0ecd0975 (patch)
treec2d68bbd6ce03cdbb94a6dc32e695203d42a9c98 /lib/edi/common.cpp
parentb5d43cff287d75de370ee94193b1162b5ab1038c (diff)
downloaddabmux-c7795fcd30a6649eede1abac18bcfbfd0ecd0975.tar.gz
dabmux-c7795fcd30a6649eede1abac18bcfbfd0ecd0975.tar.bz2
dabmux-c7795fcd30a6649eede1abac18bcfbfd0ecd0975.zip
Pull changes from common 887a122 and d609df3
Diffstat (limited to 'lib/edi/common.cpp')
-rw-r--r--lib/edi/common.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/edi/common.cpp b/lib/edi/common.cpp
index 87a15ce..e4a51b4 100644
--- a/lib/edi/common.cpp
+++ b/lib/edi/common.cpp
@@ -307,13 +307,18 @@ bool TagDispatcher::decode_tagpacket(const vector<uint8_t> &payload)
uint32_t taglength = read_32b(payload.begin() + i + 4);
if (taglength % 8 != 0) {
- etiLog.log(warn, "Invalid tag length!");
+ etiLog.log(warn, "Invalid tag length: not multiple of 8!");
break;
}
taglength /= 8;
length = taglength;
+ if (i + 8 + taglength >= payload.size()) {
+ etiLog.log(warn, "Invalid tag length: tag larger than tagpacket!");
+ break;
+ }
+
vector<uint8_t> tag_value(taglength);
copy( payload.begin() + i+8,
payload.begin() + i+8+taglength,