Avoid unaligned access
authorWouter Verhelst <w@uter.be>
Fri, 5 Jun 2009 19:43:54 +0000 (21:43 +0200)
committerWouter Verhelst <w@uter.be>
Fri, 5 Jun 2009 19:43:54 +0000 (21:43 +0200)
nbd-tester-client tried to write to a char array in a packed struct by
casting it to an u64 pointer and dereferencing it. That causes unaligned
access and, hence, a SIGBUS on SPARC.

Fix by using memcpy instead.

nbd-tester-client.c

index 40a6363..3dde737 100644 (file)
@@ -245,7 +245,7 @@ int throughput_test(gchar* hostname, int port, int sock, char sock_is_open, char
        }
        for(i=0;i+1024<=size;i+=1024) {
                if(do_write) {
-                       *((u64*)req.handle)=i;
+                       memcpy(&(req.handle),&i,sizeof(i));
                        req.from=htonll(i);
                        write(sock, &req, sizeof(req));
                        printf("Requests(+): %d\n", ++requests);