On Sat, Jul 12, 2003 at 10:59:44AM +0200, Michael Reifenberger wrote:
> ===> lib/libpam/modules/pam_echo
> cc -O2 -pipe
> -I/usr/src/lib/libpam/modules/pam_echo/../../../../contrib/openpam/include
> -I/usr/src/lib/libpam/modules/pam_echo/../../libpam  -Wsystem-headers -Werror
> -Wall -Wno-format-y2k -W -Wstrict-prototypes -Wmissing-prototypes
> -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow
> -Wcast-align -Wno-uninitialized  -c
> /usr/src/lib/libpam/modules/pam_echo/pam_echo.c
> /usr/src/lib/libpam/modules/pam_echo/pam_echo.c: In function `_pam_echo':
> /usr/src/lib/libpam/modules/pam_echo/pam_echo.c:92: warning: dereferencing
> type-punned pointer will break strict-aliasing rules
> *** Error code 1

What do you have in your /etc/make.conf?  If you change optimization
from -O2 to -O, then this problem goes away.

I looked into this problem, and created a patch based on a workaround
for a similar problem that I saw here:

http://sources.redhat.com/ml/libc-hacker/2002-11/msg00048.html

Can you try this patch?

-- 
Craig Rodrigues        
http://crodrigues.org
[EMAIL PROTECTED]
Index: pam_echo.c
===================================================================
RCS file: /home/ncvs/src/lib/libpam/modules/pam_echo/pam_echo.c,v
retrieving revision 1.3
diff -u -u -r1.3 pam_echo.c
--- pam_echo.c  6 Feb 2003 14:19:50 -0000       1.3
+++ pam_echo.c  12 Jul 2003 13:57:29 -0000
@@ -48,7 +48,11 @@
     int argc, const char *argv[])
 {
        char msg[PAM_MAX_MSG_SIZE];
-       const char *str, *p, *q;
+       const char *p, *q;
+       union {
+         const char *s;
+         const void *ptr;
+       } str;
        int err, i, item;
        size_t len;
 
@@ -89,12 +93,12 @@
                        }
                        if (item == -1)
                                continue;
-                       err = pam_get_item(pamh, item, (const void **)&str);
+                       err = pam_get_item(pamh, item, &str.ptr);
                        if (err != PAM_SUCCESS)
                                return (err);
-                       if (str == NULL)
-                               str = "(null)";
-                       for (q = str; *q != '\0' && len < sizeof(msg) - 1; ++q)
+                       if (str.s == NULL)
+                               str.s = "(null)";
+                       for (q = str.s; *q != '\0' && len < sizeof(msg) - 1; ++q)
                                msg[len++] = *q;
                }
        }
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to