Sanitize negotiation a bit
authorWouter Verhelst <w@uter.be>
Wed, 28 Jul 2010 22:10:50 +0000 (18:10 -0400)
committerWouter Verhelst <w@uter.be>
Wed, 28 Jul 2010 22:10:50 +0000 (18:10 -0400)
- 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
nbd-server.c

index f7b8e2d..ba244ae 100644 (file)
@@ -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 {
index 4064196..11fa5d7 100644 (file)
@@ -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);