[Cryptech-Commits] [sw/libhal] 04/07: Add xdr-specific error codes; update caller's length in hal_xdr_decode_buffer().
git at cryptech.is
git at cryptech.is
Tue Mar 29 20:58:38 UTC 2016
This is an automated email from the git hooks/post-receive script.
paul at psgd.org pushed a commit to branch rpc
in repository sw/libhal.
commit 14465a488fafbfb4837bad5652508784c8941f38
Author: Paul Selkirk <paul at psgd.org>
AuthorDate: Tue Mar 29 16:44:12 2016 -0400
Add xdr-specific error codes; update caller's length in hal_xdr_decode_buffer().
---
xdr.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/xdr.c b/xdr.c
index 42f0793..0d54f1b 100644
--- a/xdr.c
+++ b/xdr.c
@@ -71,7 +71,7 @@ hal_error_t hal_xdr_encode_int(uint8_t ** const outbuf, const uint8_t * const li
/* buffer overflow check */
if (limit - *outbuf < sizeof(value))
- return HAL_ERROR_IO_BAD_COUNT;
+ return HAL_ERROR_XDR_BUFFER_OVERFLOW;
**(uint32_t **)outbuf = htonl(value);
*outbuf += sizeof(value);
@@ -86,7 +86,7 @@ hal_error_t hal_xdr_decode_int(uint8_t **inbuf, const uint8_t * const limit, uin
/* buffer overflow check */
if (limit - *inbuf < sizeof(*value))
- return HAL_ERROR_IO_BAD_COUNT;
+ return HAL_ERROR_XDR_BUFFER_OVERFLOW;
*value = ntohl(**(uint32_t **)inbuf);
*inbuf += sizeof(*value);
@@ -109,7 +109,7 @@ hal_error_t hal_xdr_encode_buffer(uint8_t **outbuf, const uint8_t * const limit,
/* buffer overflow check */
if ((limit - *outbuf) < (((len + 3) & ~3) + sizeof(len)))
- return HAL_ERROR_IO_BAD_COUNT;
+ return HAL_ERROR_XDR_BUFFER_OVERFLOW;
/* encode length */
if ((ret = hal_xdr_encode_int(outbuf, limit, len)) != HAL_OK)
@@ -154,7 +154,7 @@ hal_error_t hal_xdr_decode_buffer_in_place(uint8_t **inbuf, const uint8_t * cons
if (limit - *inbuf < xdr_len) {
/* undo read of length */
*inbuf = orig_inbuf;
- return HAL_ERROR_IO_BAD_COUNT;
+ return HAL_ERROR_XDR_BUFFER_OVERFLOW;
}
/* return a pointer to the string or opaque data */
@@ -178,12 +178,11 @@ hal_error_t hal_xdr_decode_buffer(uint8_t **inbuf, const uint8_t * const limit,
uint32_t xdr_len;
if ((ret = hal_xdr_decode_buffer_in_place(inbuf, limit, &vptr, &xdr_len)) == HAL_OK) {
+ *len = xdr_len;
if (*len < xdr_len) {
- /* user buffer is too small, update *len */
- *len = xdr_len;
- /* undo read of length */
+ /* user buffer is too small, undo read of length */
*inbuf = orig_inbuf;
- return HAL_ERROR_IO_BAD_COUNT;
+ return HAL_ERROR_XDR_BUFFER_OVERFLOW;
}
memcpy(value, vptr, *len);
@@ -194,16 +193,10 @@ hal_error_t hal_xdr_decode_buffer(uint8_t **inbuf, const uint8_t * const limit,
/* ---------------------------------------------------------------- */
#ifdef TEST
-void hexdump(uint8_t *buf, uint32_t len)
+static void hexdump(uint8_t *buf, uint32_t len)
{
- int i;
-
- for (i = 0; i < len; ++i) {
- uint8_t c = buf[i];
- printf("%02x ", c);
- if ((i & 0x07) == 0x07)
- printf("\n");
- }
+ for (uint32_t i = 0; i < len; ++i)
+ printf("%02x%c", buf[i], ((i & 0x07) == 0x07) ? '\n' : ' ');
if ((len & 0x07) != 0)
printf("\n");
}
More information about the Commits
mailing list