summaryrefslogtreecommitdiffstats
path: root/src/serialize.c
diff options
context:
space:
mode:
authorsr2012-08-25 16:14:20 +0200
committersr2012-08-25 16:14:20 +0200
commit965c7ff9a9d64bb53dd7a808f3193b36ab7b014d (patch)
tree242cc32bf8f8dace2195a91ab286af970fc0d7a5 /src/serialize.c
parent... (diff)
downloaddnbd3-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.c7
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;