Fixing crash in ocrandom.c (#516)
[platform/upstream/iotivity.git] / resource / c_common / ocrandom / src / ocrandom.c
index 631906c..c7c7e09 100644 (file)
@@ -191,9 +191,23 @@ void OCFillRandomMem(uint8_t * location, uint16_t len)
     {
         return;
     }
-    for (; len--;)
+    uint16_t i, rand_idx;
+    uint8_t *loc;
+    i = len;
+    loc = location;
+    for (; i--;)
     {
-        *location++ = OCGetRandomByte();
+        *loc++ = OCGetRandomByte();
+    }
+    uint8_t temp;
+    i = len;
+    while(i > 1)
+    {
+        rand_idx = lrand48() % i;
+        temp = location[i - 1];
+        location[i - 1] = location[rand_idx];
+        location[rand_idx] = temp;
+        i--;
     }
 }