1*02c801a5SLawrence Tang /** 2*02c801a5SLawrence Tang * Utility functions to assist in generating psuedo-random CPER sections. 3*02c801a5SLawrence Tang * 4*02c801a5SLawrence Tang * Author: Lawrence.Tang@arm.com 5*02c801a5SLawrence Tang **/ 6*02c801a5SLawrence Tang #include <stdlib.h> 7*02c801a5SLawrence Tang #include <time.h> 8*02c801a5SLawrence Tang #include "../edk/BaseTypes.h" 9*02c801a5SLawrence Tang #include "gen-utils.h" 10*02c801a5SLawrence Tang 11*02c801a5SLawrence Tang //Generates a random section of the given byte size, saving the result to the given location. 12*02c801a5SLawrence Tang //Returns the length of the section as passed in. 13*02c801a5SLawrence Tang size_t generate_random_section(void** location, size_t size) 14*02c801a5SLawrence Tang { 15*02c801a5SLawrence Tang *location = generate_random_bytes(size); 16*02c801a5SLawrence Tang return size; 17*02c801a5SLawrence Tang } 18*02c801a5SLawrence Tang 19*02c801a5SLawrence Tang //Generates a random byte allocation of the given size. 20*02c801a5SLawrence Tang UINT8* generate_random_bytes(size_t size) 21*02c801a5SLawrence Tang { 22*02c801a5SLawrence Tang UINT8* bytes = malloc(size); 23*02c801a5SLawrence Tang for (size_t i = 0; i < size; i++) 24*02c801a5SLawrence Tang bytes[i] = rand(); 25*02c801a5SLawrence Tang return bytes; 26*02c801a5SLawrence Tang } 27*02c801a5SLawrence Tang 28*02c801a5SLawrence Tang //Initializes the random seed for rand() using the current time. 29*02c801a5SLawrence Tang void init_random() 30*02c801a5SLawrence Tang { 31*02c801a5SLawrence Tang srand((unsigned int)time(NULL)); 32*02c801a5SLawrence Tang }