Skip to content

Commit a77c1c8

Browse files
committed
Release v1.2.1
2 parents 54514e1 + fac48ed commit a77c1c8

File tree

6 files changed

+641
-224
lines changed

6 files changed

+641
-224
lines changed

comms/include/comms/field/adapter/SequenceSerLengthFieldPrefix.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,13 @@ class SequenceSerLengthFieldPrefix : public TBase
9595
return es;
9696
}
9797

98-
es = BaseImpl::read(iter, static_cast<std::size_t>(lenField.value()));
98+
len -= lenField.length();
99+
auto remLen = static_cast<std::size_t>(lenField.value());
100+
if (len < remLen) {
101+
return TStatus;
102+
}
103+
104+
es = BaseImpl::read(iter, remLen);
99105
if (es == comms::ErrorStatus::NotEnoughData) {
100106
return TStatus;
101107
}

comms/include/comms/field/adapter/SequenceTerminationFieldSuffix.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class SequenceTerminationFieldSuffix : public TBase
154154
std::size_t consumed = 0;
155155
while (consumed < len) {
156156
auto iterCpy = iter + consumed;
157-
auto es = termField.read(iterCpy, len);
157+
auto es = termField.read(iterCpy, len - consumed);
158158
if ((es == comms::ErrorStatus::Success) &&
159159
(termField == TermField())){
160160
break;
@@ -167,12 +167,15 @@ class SequenceTerminationFieldSuffix : public TBase
167167
return comms::ErrorStatus::NotEnoughData;
168168
}
169169

170-
auto es = BaseImpl::read(iter, consumed);
170+
auto iterCpy = iter;
171+
auto es = BaseImpl::read(iterCpy, consumed);
171172
if (es != comms::ErrorStatus::Success) {
172173
return es;
173174
}
174175

175-
std::advance(iter, termField.length());
176+
auto fullConsumeLen = consumed + termField.length();
177+
GASSERT(fullConsumeLen <= len);
178+
std::advance(iter, fullConsumeLen);
176179
return comms::ErrorStatus::Success;
177180
}
178181

0 commit comments

Comments
 (0)