Bug fixing related to stringtests failures on x86
authorRavi Nanjundappa <nravi.n@samsung.com>
Mon, 8 Jun 2015 10:24:23 +0000 (15:54 +0530)
committerErich Keane <erich.keane@intel.com>
Mon, 8 Jun 2015 17:33:51 +0000 (17:33 +0000)
Fixed Crash issues related to Strcat in the following cases
* StrcatPartialShorterSourceLen
* StrcatPartialEqualSourceLen
* StrcatPartialLongerSourceLen
* StrcatPartialZeroSourceLen

The failures were due to buffer overflow during memset.

Change-Id: Ie588c7288377bea59366e8e1ebf9fed78f4fe5b1
Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1213
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/c_common/oic_string/test/linux/oic_string_tests.cpp

index 93eb731..3c825ad 100644 (file)
@@ -463,7 +463,7 @@ TEST(StringTests, StrcpyPartialZeroSourceLen)
 TEST(StringTests, StrcatPartialShorterSourceLen)
 {
     char target[10] = "Orig";
-    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) + sizeof("Orig"));
+    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) - sizeof("Orig"));
     char source[] = "123456";
 
     char* result = OICStrcatPartial(target, sizeof(target), source, strlen(source) - 3);
@@ -483,7 +483,7 @@ TEST(StringTests, StrcatPartialShorterSourceLen)
 TEST(StringTests, StrcatPartialEqualSourceLen)
 {
     char target[10] = "Orig";
-    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) + sizeof("Orig"));
+    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) - sizeof("Orig"));
     char source[] = "123";
 
     char* result = OICStrcatPartial(target, sizeof(target), source, strlen(source));
@@ -503,7 +503,7 @@ TEST(StringTests, StrcatPartialEqualSourceLen)
 TEST(StringTests, StrcatPartialLongerSourceLen)
 {
     char target[10] = "Orig";
-    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) + sizeof("Orig"));
+    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) - sizeof("Orig"));
     char source[] = "123";
 
     char* result = OICStrcatPartial(target, sizeof(target), source, 99);
@@ -522,7 +522,7 @@ TEST(StringTests, StrcatPartialLongerSourceLen)
 TEST(StringTests, StrcatPartialZeroSourceLen)
 {
     char target[10] = "Orig";
-    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) + sizeof("Orig"));
+    memset(target + sizeof("Orig"), SENTINEL_VALUE, sizeof(target) - sizeof("Orig"));
     char source[] = "123";
 
     char* result = OICStrcatPartial(target, sizeof(target), source, 0);