static int GetString()

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;
}