#include "devil1pld.h" #include #include #include struct PldHeader *getpldh(const char *filedata) { if (filedata == NULL) { return NULL; } int32_t *n = (int32_t*)filedata; struct PldHeader *ph = (struct PldHeader*)malloc( sizeof(struct PldHeader) ); uint32_t size_offsets = sizeof(uint32_t) * n[0]; ph -> offsets = (uint32_t*)malloc(size_offsets); if (ph -> offsets == NULL) { perror("Error 4: "); free(ph); free(ph -> offsets); return NULL; } // set data of struct. ph -> numOffset = n[0]; memcpy(ph -> offsets, filedata + sizeof(int32_t), size_offsets); return ph; } void destroypldh(struct PldHeader *ph) { free(ph -> offsets); free(ph); ph = NULL; } void printpldh(struct PldHeader *ph) { if (ph == NULL) { return; } printf("number of offsets = %i\n", ph -> numOffset); unsigned int i; for (i = 0; i < ph -> numOffset; i++) { printf("offset %i = %x\n", i, ph -> offsets[i]); } }