14 if (buffer_size >= size_requested)
17 buffer = (uint8_t *)realloc(buffer, size_requested);
23 buffer_size = size_requested;
27 tlv_s *
readFromFile(FILE *in_fd, uint8_t *&out_buffer,
size_t &out_buffer_size)
33 if (
checkBufferSize(out_buffer, out_buffer_size,
sizeof(header_s)) < 0) {
34 printf(
"[TLVParser] Failed to reallocate buffer\n");
37 read_sz = fread(out_buffer,
sizeof(header_s), 1, in_fd);
41 tlv_s *root = (tlv_s *)out_buffer;
43 assert(
length >=
sizeof(header_s));
47 printf(
"[TLVParser] Failed to reallocate buffer\n");
50 read_sz = fread(out_buffer +
sizeof(header_s),
length -
sizeof(header_s), 1, in_fd);
54 return (tlv_s *)out_buffer;
66 size_t root_index = 0;
68 return iter(root_index);
81 while ((current_tlv =
iter(index)))
82 if (current_tlv->getType() == type)
90 tlv_s *next_tlv = (tlv_s *)(
buffer + index);
103 printf(
"[TLVParser] Next element is out of bound\n");
118 printf(
"[TLVParser] Bad TLV element passed to parseTimestamp\n");
124 uint32_t *casted = (uint32_t *)read->getValue();
125 output.tv_sec = casted[0];
126 output.tv_usec = casted[1];