version 1.12, 2022/05/25 00:31:13 |
version 1.13, 2022/05/25 06:03:44 |
|
|
return r; |
return r; |
if (valp != NULL) { |
if (valp != NULL) { |
if ((*valp = malloc(len + 1)) == NULL) { |
if ((*valp = malloc(len + 1)) == NULL) { |
SSHBUF_DBG("SSH_ERR_ALLOC_FAIL"); |
SSHBUF_DBG(("SSH_ERR_ALLOC_FAIL")); |
return SSH_ERR_ALLOC_FAIL; |
return SSH_ERR_ALLOC_FAIL; |
} |
} |
if (len != 0) |
if (len != 0) |
|
|
*lenp = len; |
*lenp = len; |
if (sshbuf_consume(buf, len + 4) != 0) { |
if (sshbuf_consume(buf, len + 4) != 0) { |
/* Shouldn't happen */ |
/* Shouldn't happen */ |
SSHBUF_DBG("SSH_ERR_INTERNAL_ERROR"); |
SSHBUF_DBG(("SSH_ERR_INTERNAL_ERROR")); |
SSHBUF_ABORT(); |
SSHBUF_ABORT(); |
return SSH_ERR_INTERNAL_ERROR; |
return SSH_ERR_INTERNAL_ERROR; |
} |
} |
|
|
if (lenp != NULL) |
if (lenp != NULL) |
*lenp = 0; |
*lenp = 0; |
if (sshbuf_len(buf) < 4) { |
if (sshbuf_len(buf) < 4) { |
SSHBUF_DBG("SSH_ERR_MESSAGE_INCOMPLETE"); |
SSHBUF_DBG(("SSH_ERR_MESSAGE_INCOMPLETE")); |
return SSH_ERR_MESSAGE_INCOMPLETE; |
return SSH_ERR_MESSAGE_INCOMPLETE; |
} |
} |
len = PEEK_U32(p); |
len = PEEK_U32(p); |
if (len > SSHBUF_SIZE_MAX - 4) { |
if (len > SSHBUF_SIZE_MAX - 4) { |
SSHBUF_DBG("SSH_ERR_STRING_TOO_LARGE"); |
SSHBUF_DBG(("SSH_ERR_STRING_TOO_LARGE")); |
return SSH_ERR_STRING_TOO_LARGE; |
return SSH_ERR_STRING_TOO_LARGE; |
} |
} |
if (sshbuf_len(buf) - 4 < len) { |
if (sshbuf_len(buf) - 4 < len) { |
SSHBUF_DBG("SSH_ERR_MESSAGE_INCOMPLETE"); |
SSHBUF_DBG(("SSH_ERR_MESSAGE_INCOMPLETE")); |
return SSH_ERR_MESSAGE_INCOMPLETE; |
return SSH_ERR_MESSAGE_INCOMPLETE; |
} |
} |
if (valp != NULL) |
if (valp != NULL) |
|
|
/* Allow a \0 only at the end of the string */ |
/* Allow a \0 only at the end of the string */ |
if (len > 0 && |
if (len > 0 && |
(z = memchr(p , '\0', len)) != NULL && z < p + len - 1) { |
(z = memchr(p , '\0', len)) != NULL && z < p + len - 1) { |
SSHBUF_DBG("SSH_ERR_INVALID_FORMAT"); |
SSHBUF_DBG(("SSH_ERR_INVALID_FORMAT")); |
return SSH_ERR_INVALID_FORMAT; |
return SSH_ERR_INVALID_FORMAT; |
} |
} |
if ((r = sshbuf_skip_string(buf)) != 0) |
if ((r = sshbuf_skip_string(buf)) != 0) |
return -1; |
return -1; |
if (valp != NULL) { |
if (valp != NULL) { |
if ((*valp = malloc(len + 1)) == NULL) { |
if ((*valp = malloc(len + 1)) == NULL) { |
SSHBUF_DBG("SSH_ERR_ALLOC_FAIL"); |
SSHBUF_DBG(("SSH_ERR_ALLOC_FAIL")); |
return SSH_ERR_ALLOC_FAIL; |
return SSH_ERR_ALLOC_FAIL; |
} |
} |
if (len != 0) |
if (len != 0) |
|
|
int r; |
int r; |
|
|
if (len > SSHBUF_SIZE_MAX - 4) { |
if (len > SSHBUF_SIZE_MAX - 4) { |
SSHBUF_DBG("SSH_ERR_NO_BUFFER_SPACE"); |
SSHBUF_DBG(("SSH_ERR_NO_BUFFER_SPACE")); |
return SSH_ERR_NO_BUFFER_SPACE; |
return SSH_ERR_NO_BUFFER_SPACE; |
} |
} |
if ((r = sshbuf_reserve(buf, len + 4, &d)) < 0) |
if ((r = sshbuf_reserve(buf, len + 4, &d)) < 0) |
|
|
int r, prepend; |
int r, prepend; |
|
|
if (len > SSHBUF_SIZE_MAX - 5) { |
if (len > SSHBUF_SIZE_MAX - 5) { |
SSHBUF_DBG("SSH_ERR_NO_BUFFER_SPACE"); |
SSHBUF_DBG(("SSH_ERR_NO_BUFFER_SPACE")); |
return SSH_ERR_NO_BUFFER_SPACE; |
return SSH_ERR_NO_BUFFER_SPACE; |
} |
} |
/* Skip leading zero bytes */ |
/* Skip leading zero bytes */ |
|
|
*lenp = len; |
*lenp = len; |
if (sshbuf_consume(buf, olen + 4) != 0) { |
if (sshbuf_consume(buf, olen + 4) != 0) { |
/* Shouldn't happen */ |
/* Shouldn't happen */ |
SSHBUF_DBG("SSH_ERR_INTERNAL_ERROR"); |
SSHBUF_DBG(("SSH_ERR_INTERNAL_ERROR")); |
SSHBUF_ABORT(); |
SSHBUF_ABORT(); |
return SSH_ERR_INTERNAL_ERROR; |
return SSH_ERR_INTERNAL_ERROR; |
} |
} |