From 0d92d3b95dd7f5372b0da4b3ae7c3dc44adc1310 Mon Sep 17 00:00:00 2001 From: Wouter Verhelst Date: Wed, 28 Jul 2010 18:10:50 -0400 Subject: [PATCH] Sanitize negotiation a bit - We don't need 64 bit size_t for a name - We don't need 64 reserved bits client to server; if we ever need more than 31, we'll just add another field and use the last bit as a marker to say that the other field is available. --- nbd-client.c | 10 +++++----- nbd-server.c | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/nbd-client.c b/nbd-client.c index f7b8e2d..ba244ae 100644 --- a/nbd-client.c +++ b/nbd-client.c @@ -141,8 +141,8 @@ void negotiate(int sock, u64 *rsize64, u32 *flags, char* name) { magic = ntohll(magic); if(name) { uint32_t opt; - uint64_t namesize; - uint64_t reserved = 0; + uint32_t namesize; + uint32_t reserved = 0; if (magic != opts_magic) err("Not enough opts_magic"); @@ -156,12 +156,12 @@ void negotiate(int sock, u64 *rsize64, u32 *flags, char* name) { write(sock, &reserved, sizeof(reserved)); /* Write the export name that we're after */ - magic = ntohll(cliserv_magic); + magic = ntohll(opts_magic); write(sock, &magic, sizeof(magic)); opt = ntohl(NBD_OPT_EXPORT_NAME); write(sock, &opt, sizeof(opt)); - namesize = (u64)strlen(name); - namesize = ntohll(namesize); + namesize = (u32)strlen(name); + namesize = ntohl(namesize); write(sock, &namesize, sizeof(namesize)); write(sock, name, strlen(name)); } else { diff --git a/nbd-server.c b/nbd-server.c index 4064196..11fa5d7 100644 --- a/nbd-server.c +++ b/nbd-server.c @@ -1239,9 +1239,9 @@ CLIENT* negotiate(int net, CLIENT *client, GArray* servers) { } } if(!client) { - uint64_t reserved; + uint32_t reserved; uint32_t opt; - uint64_t namelen; + uint32_t namelen; char* name; int i; @@ -1251,7 +1251,7 @@ CLIENT* negotiate(int net, CLIENT *client, GArray* servers) { read(net, &reserved, sizeof(reserved)); read(net, &magic, sizeof(magic)); magic = ntohll(magic); - if(magic != cliserv_magic) { + if(magic != opts_magic) { close(net); return NULL; } @@ -1262,7 +1262,7 @@ CLIENT* negotiate(int net, CLIENT *client, GArray* servers) { return NULL; } read(net, &namelen, sizeof(namelen)); - namelen = ntohll(namelen); + namelen = ntohl(namelen); name = malloc(namelen+1); name[namelen+1]=0; read(net, name, namelen); -- 1.7.10.4