summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Kanchev <kanchev@itestra.com>2013-06-06 10:28:23 +0200
committerGerrit Code Review <qqmthk1@lpmodthk02.bmwgroup.net>2013-06-07 08:49:44 +0200
commitdc1714bdc385ead53909344069b2d70da8b8608e (patch)
treed3e46a5ac2006311aedb359b185144f5f1480aac
parent418e94cc94122509eeb73728a33a100b7698d164 (diff)
downloadgenivi-common-api-dbus-runtime-dc1714bdc385ead53909344069b2d70da8b8608e.tar.gz
stream: fix assert logic for signature length
signature length is uint8 so checking for length < 256 will always assert true. This also currects logic when serializing std::string::length() might have different size than uint8
-rw-r--r--src/CommonAPI/DBus/DBusInputStream.h1
-rw-r--r--src/CommonAPI/DBus/DBusOutputStream.cpp10
2 files changed, 6 insertions, 5 deletions
diff --git a/src/CommonAPI/DBus/DBusInputStream.h b/src/CommonAPI/DBus/DBusInputStream.h
index f09be98..fb190c9 100644
--- a/src/CommonAPI/DBus/DBusInputStream.h
+++ b/src/CommonAPI/DBus/DBusInputStream.h
@@ -206,7 +206,6 @@ class DBusInputStream: public InputStream {
inline void skipOverSignature() {
uint8_t signatureLength;
readValue(signatureLength);
- assert(signatureLength < 256);
readRawData(signatureLength + 1);
}
diff --git a/src/CommonAPI/DBus/DBusOutputStream.cpp b/src/CommonAPI/DBus/DBusOutputStream.cpp
index cf84fe8..701a628 100644
--- a/src/CommonAPI/DBus/DBusOutputStream.cpp
+++ b/src/CommonAPI/DBus/DBusOutputStream.cpp
@@ -308,10 +308,12 @@ void DBusOutputStream::beginWriteGenericVector() {
}
void DBusOutputStream::writeSignature(const std::string& signature) {
- uint8_t length = (uint8_t) signature.length();
- assert(length < 256);
- *this << length;
- writeRawData(signature.c_str(), length + 1);
+ const auto& signatureLength = signature.length();
+ assert(signatureLength > 0 && signatureLength < 256);
+
+ const uint8_t wireLength = (uint8_t) signatureLength;
+ *this << wireLength;
+ writeRawData(signature.c_str(), wireLength + 1);
}
void DBusOutputStream::rememberCurrentStreamPosition() {