Silence SVACE defect in tests 05/296205/1
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 21 Jul 2023 12:37:28 +0000 (14:37 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 21 Jul 2023 13:51:41 +0000 (15:51 +0200)
WGID 500405 | ProtocolSerialization.cpp:49PROC_USE.VULNERABLE

Use of vulnerable function 'strcpy' at ProtocolSerialization.cpp:49.
This function is unsafe, use strncpy instead.

Change-Id: I6f9aa86f14fbba072adf44dc49fcc8d4be086952

test/common/protocols/ProtocolSerialization.cpp

index 6eb70f3f5f37916da37e04db560d387e945dd72b..4f8457a1e068d489076063e390c6117a0def1d39 100644 (file)
@@ -46,7 +46,7 @@ ACTION_P(AssignUInt16, param) {
     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) {
@@ -198,8 +198,8 @@ TEST(Deserialization, 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));
 }
 
@@ -212,8 +212,8 @@ TEST(Deserialization, maxStringWithLengthPositive) {
 
     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));
 }
 
@@ -243,8 +243,8 @@ TEST(Deserialization, maxVectorPositive) {
 
     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));
@@ -288,10 +288,10 @@ TEST(Deserialization, maxMapPositive) {
 
     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));
@@ -312,10 +312,10 @@ TEST(Deserialization, maxMapOfVectorsPositive) {
 
     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));
@@ -345,8 +345,8 @@ TEST(Deserialization, mapWithOverMaxValueNegative) {
 
     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);
@@ -362,8 +362,8 @@ TEST(Deserialization, mapWithOverMaxValueVectorNegative) {
 
     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);