diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-18 11:01:56 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-18 11:01:56 -0400 |
commit | 5eef60aa1a6ac9e174708f19a154ce9660589b6d (patch) | |
tree | 649e238dc905b7071efc9e4a06b61bcb286ee8a0 /src/packet/record.c | |
parent | fix makefile (diff) | |
download | wrapper-5eef60aa1a6ac9e174708f19a154ce9660589b6d.tar.gz wrapper-5eef60aa1a6ac9e174708f19a154ce9660589b6d.tar.bz2 wrapper-5eef60aa1a6ac9e174708f19a154ce9660589b6d.zip |
Diffstat (limited to 'src/packet/record.c')
-rw-r--r-- | src/packet/record.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/packet/record.c b/src/packet/record.c index 53934ed..c676bce 100644 --- a/src/packet/record.c +++ b/src/packet/record.c @@ -140,17 +140,28 @@ static void read_txt_record(PacketBuffer* buffer, Record* record) { TXTRecord data; data.len = 0; data.text = malloc(sizeof(uint8_t*) * 2); - uint8_t capacity = 2; + uint8_t total = record->len; while (1) { if (data.len >= capacity) { - capacity *= 2; + if (capacity >= 128) { + capacity = 255; + } else { + capacity *= 2; + } data.text = realloc(data.text, sizeof(uint8_t*) * capacity); } - + buffer_read_string(buffer, &data.text[data.len]); - if(data.text[data.len][0] == 0) break; + if(data.text[data.len][0] == 0) { + free(data.text[data.len]); + break; + } + data.len++; + + total -= data.text[data.len - 1][0] + 1; + if (total == 0) break; } record->data.txt = data; |