author | Hernâni Marques <hernani@pep.foundation> |
Wed, 27 Jun 2018 00:52:09 +0200 | |
changeset 2771 | b0c0d39f643d |
parent 1517 | f29830f1c407 |
permissions | -rw-r--r-- |
vb@1517 | 1 |
// This file is under GNU General Public License 3.0 |
vb@1517 | 2 |
// see LICENSE.txt |
vb@1517 | 3 |
|
vb@1116 | 4 |
#include "asn1_helper.h" |
vb@1116 | 5 |
#include <assert.h> |
vb@1116 | 6 |
#include <stdlib.h> |
vb@1116 | 7 |
|
vb@1116 | 8 |
growing_buf_t *new_growing_buf(void) |
vb@1116 | 9 |
{ |
vb@1116 | 10 |
growing_buf_t *result = calloc(1, sizeof(growing_buf_t)); |
vb@1116 | 11 |
assert(result); |
vb@1116 | 12 |
return result; |
vb@1116 | 13 |
} |
vb@1116 | 14 |
|
vb@1116 | 15 |
void free_growing_buf(growing_buf_t *buf) |
vb@1116 | 16 |
{ |
vb@1116 | 17 |
if (buf) { |
vb@1116 | 18 |
free(buf->data); |
vb@1116 | 19 |
free(buf); |
vb@1116 | 20 |
} |
vb@1116 | 21 |
} |
vb@1116 | 22 |
|
vb@1116 | 23 |
int consume_bytes(const void *src, size_t size, growing_buf_t *dst) |
vb@1116 | 24 |
{ |
vb@1116 | 25 |
assert(src && dst); |
vb@1116 | 26 |
if (!(src && dst)) |
vb@1116 | 27 |
return -1; |
vb@1116 | 28 |
|
vb@1116 | 29 |
char *new_data = realloc(dst->data, dst->size + size + 1); |
vb@1137 | 30 |
assert(new_data); |
vb@1116 | 31 |
if (!new_data) |
vb@1116 | 32 |
return -1; |
vb@1116 | 33 |
dst->data = new_data; |
vb@1116 | 34 |
memcpy(dst->data + dst->size, src, size); |
vb@1116 | 35 |
dst->size += size; |
vb@1116 | 36 |
dst->data[dst->size] = 0; // safeguard |
vb@1116 | 37 |
|
vb@1116 | 38 |
return 1; |
vb@1116 | 39 |
} |
vb@1116 | 40 |