Fix valgrind uninit-access error in security test 81/22381/2
authorMats Wichmann <mats@linux.com>
Thu, 7 Sep 2017 21:19:33 +0000 (15:19 -0600)
committerRandeep Singh <randeep.s@samsung.com>
Fri, 22 Sep 2017 02:59:14 +0000 (02:59 +0000)
In this test, the pstat is not set up with a byte array uuid to
convert in pstat->rownerID, but is called with options that will
cause such a conversion.  Add a dummy value to avoid the complaint.

I would suggest this may be an defect in
resource/csdk/security/src/srmutility.c about line 111-120:
OCConvertUuidToString is called with uuid.id without checking
if it contains any data.  The check up front is:
    if(NULL == uuid || NULL == strUuid || NULL != *strUuid)

Fixes this report (and related ones for same loc):

Use of uninitialised value of size 8
   at 0x6B69791: _itoa_word (in /usr/lib64/libc-2.25.so)
   by 0x6B6CF6D: vfprintf (in /usr/lib64/libc-2.25.so)
   by 0x6B98A8F: vsnprintf (in /usr/lib64/libc-2.25.so)
   by 0x6B754DE: snprintf (in /usr/lib64/libc-2.25.so)
   by 0x5B3F6F: OCConvertUuidToString (ocrandom.c:307)
   by 0x5128E4: ConvertUuidToStr (srmutility.c:120)
   by 0x4DCEF6: PstatToCBORPayloadPartial (pstatresource.c:313)
   by 0x4DDA7C: PstatToCBORPayload (pstatresource.c:400)
   by 0x422688: PstatResourceTest_PstatToCBORPayloadAndCBORPayloadToPstat_Test::TestBody() (pstatresource.cpp:145)

Change-Id: I329087619f802989da187e1aa6ff164066ce94cb
Signed-off-by: Mats Wichmann <mats@linux.com>
resource/csdk/security/unittest/pstatresource.cpp

index 8fcc832..482a024 100644 (file)
@@ -136,6 +136,7 @@ TEST(PstatResourceTest, PstatToCBORPayloadAndCBORPayloadToPstat)
     pstat.tm = NORMAL;
     pstat.om = SINGLE_SERVICE_CLIENT_DRIVEN;
     pstat.smLen = 1;
+    memcpy(pstat.rownerID.id, "feedbeefdeadbeef", 16);
     pstat.sm = (OicSecDpom_t*)OICCalloc(pstat.smLen, sizeof(*pstat.sm));
     ASSERT_TRUE(NULL != pstat.sm);
     pstat.sm[0] = SINGLE_SERVICE_CLIENT_DRIVEN;