From 965c7ff9a9d64bb53dd7a808f3193b36ab7b014d Mon Sep 17 00:00:00 2001 From: sr Date: Sat, 25 Aug 2012 16:14:20 +0200 Subject: [*] Fix bug in serializer_get_* [CLIENT/KERNEL] Change ioctl to handle volume names instead if vids [*] Make protocol endian safe [CLIENT] Display ioctl errorcode on failure --- src/serialize.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/serialize.c') diff --git a/src/serialize.c b/src/serialize.c index 7961cfe..fa1e878 100644 --- a/src/serialize.c +++ b/src/serialize.c @@ -22,7 +22,7 @@ uint16_t serializer_get_uint16(serialized_buffer_t *buffer) uint16_t ret; if (buffer->buffer_pointer + 2 > buffer->buffer_end) return 0; memcpy(&ret, buffer->buffer_pointer, 2); - *buffer->buffer_pointer += 2; + buffer->buffer_pointer += 2; return net_order_16(ret); } @@ -31,13 +31,14 @@ uint64_t serializer_get_uint64(serialized_buffer_t *buffer) uint64_t ret; if (buffer->buffer_pointer + 8 > buffer->buffer_end) return 0; memcpy(&ret, buffer->buffer_pointer, 8); - *buffer->buffer_pointer += 8; + buffer->buffer_pointer += 8; return net_order_64(ret); } char* serializer_get_string(serialized_buffer_t *buffer) { char *ptr = buffer->buffer_pointer, *start = buffer->buffer_pointer; + if (ptr >= buffer->buffer_end) return NULL; while (ptr < buffer->buffer_end && *ptr) ++ptr; if (*ptr) return NULL; // String did not terminate within buffer (possibly corrupted/malicious packet) buffer->buffer_pointer = ptr + 1; @@ -62,7 +63,7 @@ void serializer_put_uint64(serialized_buffer_t *buffer, uint64_t value) void serializer_put_string(serialized_buffer_t *buffer, char *value) { - size_t len = strlen(value) + 1; + const size_t len = strlen(value) + 1; if (buffer->buffer_pointer + len > buffer->buffer_end) return; memcpy(buffer->buffer_pointer, value, len); buffer->buffer_pointer += len; -- cgit v1.2.3-55-g7522