ossp-pkg/xds/xdr-decode-uint64.c 1.3 -> 1.3.2.1
--- xdr-decode-uint64.c 2001/07/23 15:33:42 1.3
+++ xdr-decode-uint64.c 2001/08/01 11:26:56 1.3.2.1
@@ -28,19 +28,27 @@
#include <assert.h>
#include "internal.h"
-int xdr_decode_uint64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args)
+int xdr_decode_uint64(xds_t* xds, void* engine_context,
+ void* buffer, size_t buffer_size, size_t* used_buffer_size,
+ va_list* args)
{
xds_uint64_t* value;
/* Consistency checks. */
- assert(xds != NULL);
- assert(buffer != NULL);
- assert(args != NULL);
- if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL)
- return XDS_ERR_INVALID_ARG;
+ xds_check_parameter(xds != NULL);
+ xds_check_parameter(buffer != NULL);
+ xds_check_parameter(buffer_size != 0);
+ xds_check_parameter(used_buffer_size != NULL);
+ xds_check_parameter(args != NULL);
+
+ /* We need 8 bytes in the buffer to format our parameter. If we
+ don't have them, return an underflow error. */
+
if (buffer_size < 8)
return XDS_ERR_UNDERFLOW;
+ else
+ *used_buffer_size = 8;
/* Get value and format it into the buffer. */
|
|