Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jul 2003 10:02:31 -0400
From:      Craig Rodrigues <rodrigc@crodrigues.org>
To:        Michael Reifenberger <root@reifenberger.com>
Cc:        FreeBSD-Current <current@freebsd.org>
Subject:   Re: -current buildworld failure in libpam
Message-ID:  <20030712140231.GA42299@crodrigues.org>
In-Reply-To: <20030712105817.B22886@nihil.reifenberger.com>
References:  <20030712105817.B22886@nihil.reifenberger.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--2fHTh5uZTiUOsy+g
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

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
rodrigc@crodrigues.org

--2fHTh5uZTiUOsy+g
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="patch1.txt"

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;
 		}
 	}

--2fHTh5uZTiUOsy+g--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030712140231.GA42299>