auto hparam = htole16(param);
memcpy(arg1, &hparam, sizeof(hparam));
}
-ACTION_P(AssignString, param) { strcpy(static_cast<char*>(arg1), param); }
+ACTION_P(AssignString, param) { strncpy(static_cast<char*>(arg1), param.c_str(), param.size()); }
} // namespace
TEST(Serialization, maxStringPositive) {
std::string stringInput;
stringInput.resize(CYNARA_MAX_ID_LENGTH, ' ');
- EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()));
+ EXPECT_CALL(stream, read(_, _)).WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput));
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, string));
}
stringInput.resize(CYNARA_MAX_ID_LENGTH, ' ');
- EXPECT_CALL(stream, read(_, _)).WillOnce(AssignString(stringInput.c_str()));
- EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, CYNARA_MAX_ID_LENGTH,
+ EXPECT_CALL(stream, read(_, _)).WillOnce(AssignString(stringInput));
+ EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, stringInput.size(),
string));
}
for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
- .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()));
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput));
}
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, vector));
for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
- .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()))
- .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()));
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput))
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput));
}
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map));
for (int i = 0; i < CYNARA_MAX_VECTOR_SIZE; i++) {
EXPECT_CALL(stream, read(_, _)).InSequence(sequence)
- .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()))
- .WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH))
- .WillOnce(AssignString(stringInput.c_str()));
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput))
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput));
}
EXPECT_NO_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map));
EXPECT_CALL(stream, read(_, _))
.WillOnce(AssignUInt16(1))
- .WillOnce(AssignUInt16(1))
- .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput))
.WillOnce(AssignUInt16(CYNARA_MAX_ID_LENGTH + 1));
EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
Cynara::InvalidProtocolException);
EXPECT_CALL(stream, read(_, _))
.WillOnce(AssignUInt16(1))
- .WillOnce(AssignUInt16(1))
- .WillOnce(AssignString(stringInput.c_str()))
+ .WillOnce(AssignUInt16(stringInput.size()))
+ .WillOnce(AssignString(stringInput))
.WillOnce(AssignUInt16(CYNARA_MAX_VECTOR_SIZE + 1));
EXPECT_THROW(Cynara::ProtocolDeserialization::deserialize(stream, map),
Cynara::InvalidProtocolException);