diff options
author | sr | 2012-08-25 16:14:20 +0200 |
---|---|---|
committer | sr | 2012-08-25 16:14:20 +0200 |
commit | 965c7ff9a9d64bb53dd7a808f3193b36ab7b014d (patch) | |
tree | 242cc32bf8f8dace2195a91ab286af970fc0d7a5 /src/serialize.c | |
parent | ... (diff) | |
download | dnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.tar.gz dnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.tar.xz dnbd3-965c7ff9a9d64bb53dd7a808f3193b36ab7b014d.zip |
[*] 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
Diffstat (limited to 'src/serialize.c')
-rw-r--r-- | src/serialize.c | 7 |
1 files changed, 4 insertions, 3 deletions
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; |