Date: Thu, 28 Jan 2016 20:06:16 +0800 From: Jov <amutu@amutu.com> To: Ian Lepore <ian@freebsd.org> Cc: freebsd-arm@freebsd.org Subject: Re: [Bug 206658] Bus error for pfctl -sa on rpi2 r294499 snap Message-ID: <CADyrUxPhubhCi6MPBO4eX4WEXCxbMvcz9ZJEzt36azw6dcH8eA@mail.gmail.com> In-Reply-To: <1453903433.42081.30.camel@freebsd.org> References: <bug-206658-7@https.bugs.freebsd.org/bugzilla/> <1453862939.42081.25.camel@freebsd.org> <CADyrUxPcndOaeUn_UcDN4F=N5XHsby-wQmLvRfUcYNTjNJPUiQ@mail.gmail.com> <1453867724.42081.28.camel@freebsd.org> <CADyrUxO-X3f6gXDHSKZ1Xy5PFxtZrsM0kiJrnN5MPhaAC5MZkA@mail.gmail.com> <1453903433.42081.30.camel@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
bus error at the similar position: Program received signal SIGBUS, Bus error. 0x00021614 in print_host (addr=0x2065111a, port=15268, af=2 '\002', opts=1024) at /usr/src/sbin/pfctl/pf_print_state.c:178 warning: Source file is more recent than executable. 178 memcpy(&aw.v.a.addr, addr, sizeof(aw.v.a.addr)); Current language: auto; currently minimal (gdb) p addr $1 = (struct pf_addr *) 0x2065111a (gdb) p *addr $2 = {pfa = {v4 = {s_addr = 1912711360}, v6 = {__u6_addr = {__u6_addr8 = 0x2065111a "(\001r", __u6_addr16 = 0x2065111a, __u6_addr32 = 0x2065111a}}, addr8 = 0x2065111a "(\001r", addr16 = 0x2065111a, addr32 = 0x2065111a}} (gdb) p 0x2065111a $3 = 543494426 (gdb) Jov blog: http:amutu.com/blog <http://amutu.com/blog> 2016-01-27 22:03 GMT+08:00 Ian Lepore <ian@freebsd.org>: > On Wed, 2016-01-27 at 20:34 +0800, Jov wrote: > > Warning: Object directory not changed from original > > /usr/src/sbin/pfctl > > cc -O -pipe -mfloat-abi=softfp -Wall -Wmissing-prototypes > > -Wno-uninitialized -Wstrict-prototypes -DENABLE_ALTQ > > -I/usr/src/sbin/pfctl > > -DWITH_INET6 -DWITH_INET -g -std=gnu99 -Wsystem-headers -Werror -Wall > > -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body > > -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological > > -compare > > -Wno-unused-value -Wno-parentheses-equality -Wno-unuse function > > -Wno-enum-conversion -Wno-unused-local-typedef -Wno-switch -Wno > > -switch-enum > > -Wno-knr-promoted-parameter -Qunused-arguments -c pf_print_state.c > > -o > > pf_print_state.o > > pf_print_state.c:149:25: error: passing 'struct in_addr' to parameter > > of > > incompatible type 'const void *' > > memcpy(&sin.sin_addr, addr->v4, > > sizeof(sin.sin_addr)); > > ^~~~~~~~ > > /usr/include/string.h:62:56: note: passing argument to parameter here > > void *memcpy(void * __restrict, const void * __restrict, size_t); > > ^ > > pf_print_state.c:160:27: error: passing 'struct in6_addr' to > > parameter of > > incompatible type 'const void *' > > memcpy(&sin6.sin6_addr, addr->v6, > > sizeof(sin6.sin6_addr)); > > ^~~~~~~~ > > /usr/include/string.h:62:56: note: passing argument to parameter here > > void *memcpy(void * __restrict, const void * __restrict, size_t); > > ^ > > 2 errors generated. > > *** Error code 1 > > > > Stop. > > make: stopped in /usr/src/sbin/pfctl > > > > Oops, sorry about that, try this one... > > -- Ian > > Index: sbin/pfctl/pf_print_state.c > =================================================================== > --- sbin/pfctl/pf_print_state.c (revision 294860) > +++ sbin/pfctl/pf_print_state.c (working copy) > @@ -146,7 +146,7 @@ print_name(struct pf_addr *addr, sa_family_t af) > memset(&sin, 0, sizeof(sin)); > sin.sin_len = sizeof(sin); > sin.sin_family = AF_INET; > - sin.sin_addr = addr->v4; > + memcpy(&sin.sin_addr, &addr->v4, sizeof(sin.sin_addr)); > getnameinfo((struct sockaddr *)&sin, sin.sin_len, > host, sizeof(host), NULL, 0, NI_NOFQDN); > break; > @@ -157,7 +157,7 @@ print_name(struct pf_addr *addr, sa_family_t af) > memset(&sin6, 0, sizeof(sin6)); > sin6.sin6_len = sizeof(sin6); > sin6.sin6_family = AF_INET6; > - sin6.sin6_addr = addr->v6; > + memcpy(&sin6.sin6_addr, &addr->v6, sizeof(sin6.sin6_addr)); > getnameinfo((struct sockaddr *)&sin6, sin6.sin6_len, > host, sizeof(host), NULL, 0, NI_NOFQDN); > break; > @@ -175,7 +175,7 @@ print_host(struct pf_addr *addr, u_int16_t port, s > struct pf_addr_wrap aw; > > memset(&aw, 0, sizeof(aw)); > - aw.v.a.addr = *addr; > + memcpy(&aw.v.a.addr, addr, sizeof(aw.v.a.addr)); > if (af == AF_INET) > aw.v.a.mask.addr32[0] = 0xffffffff; > else { > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADyrUxPhubhCi6MPBO4eX4WEXCxbMvcz9ZJEzt36azw6dcH8eA>