rendered paste bodystatic ssize_t ptb_read_string(struct ptbf *f, char **dest)
{
uint8_t shortlength;
uint16_t length;
char *data;
ptb_data(f, &shortlength, 1);
/* If length is 0xff, this is followed by a uint16_t length */
if(shortlength == 0xff) {
if(ptb_data(f, &length, 2) < 2) return -1;
} else {
length = shortlength;
}
if(length) {
data = malloc_p(char, length+1);
if(ptb_data(f, data, length) < length) return -1;
ptb_debug("Read string: %s", data);
*dest = data;
} else {
ptb_debug("Empty string");
*dest = NULL;
}
return length;
}