[krbdev.mit.edu #6308] Alignment problem in resolver test

Jorgen Wahlsten via RT rt-comment at krbdev.mit.edu
Tue Dec 23 12:23:11 EST 2008


Hello!
In compiling krb5, version 1.6.3, I ran into a core dump (bus error) during
'gmake check' on a Solaris 2.10/Sun Fire T200 build system, when it tried to
run tests/resolve/resolve.

It seems there is an alignment problem with the automatic 'addrcopy'
variable in src/tests/resolve/resolve.c. I forced it to align (and execute
successfully) after the change below. I figured this was an easier test,
than changing the code to use an in_addr struct -- which is perhaps a more
"correct" fix.

Thanks
/Jorgen Wahlsten


============================== cut here ==============================
--- resolve.c~  2003-07-22 14:02:34.000000000 -0400
+++ resolve.c   2008-12-23 10:09:31.475658000 -0500
@@ -77,7 +77,11 @@
 {
        char myname[MAXHOSTNAMELEN+1];
        char *ptr;
-       char addrcopy[4];
+       /* char addrcopy[4]; */
+       union {
+           char addrcopy[4];
+           int make_me_aligned;
+       } u;
        struct hostent *host;
        int quiet = 0;

@@ -123,10 +127,10 @@
            printf("Host address: %d.%d.%d.%d\n",
                   UC(ptr[0]), UC(ptr[1]), UC(ptr[2]), UC(ptr[3]));

-       memcpy(addrcopy, ptr, 4);
+       memcpy(u.addrcopy, ptr, 4);

        /* Convert back to full name */
-       if((host = gethostbyaddr(addrcopy, 4, AF_INET)) == NULL) {
+       if((host = gethostbyaddr(u.addrcopy, 4, AF_INET)) == NULL) {
                fprintf(stderr, "Error looking up IP address - fatal\n");
                exit(2);
        }
============================== cut here ==============================




More information about the krb5-bugs mailing list