in src/oslogin_sshca.cc [48:77]
static int GetString(char **buff, size_t *blen, char **ptr, size_t *len_ptr) {
u_int32_t len;
if (*blen < 4) {
return -1;
}
len = PEEK_U32(*buff);
if ((*blen - 4) < len) {
return -1;
}
if (len_ptr != NULL) {
*len_ptr = len;
}
*buff = *buff + 4;
*blen = *blen - 4;
if (ptr != NULL) {
*ptr = (char *)malloc(len + 1);
memcpy(*ptr, *buff, len);
((char *)*ptr)[len] = '\0';
}
// Always move the buffer forward.
*buff = *buff + len;
return 0;
}