summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-03-03 13:05:00 +0000
committershin <shin@FreeBSD.org>2000-03-03 13:05:00 +0000
commit1b7dce690e9fb2a298fb1e3bedc8186e71b877a3 (patch)
treeb5a56eafab2a9b9e971cc153059e5cf2c3910cc7
parent2ce6961c1be143a79856f434b91fcfb88cab0f04 (diff)
downloadFreeBSD-src-1b7dce690e9fb2a298fb1e3bedc8186e71b877a3.zip
FreeBSD-src-1b7dce690e9fb2a298fb1e3bedc8186e71b877a3.tar.gz
Replace structure copy form ifreq obtained by SIOCGIFADDR
to memcpy(), to avoid unaligned access trap on alpha. Approved by: jkh
-rw-r--r--crypto/kerberosIV/lib/krb/getaddrs.c4
-rw-r--r--lib/libc/rpc/get_myaddress.c2
-rw-r--r--lib/libc/rpc/pmap_rmt.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/crypto/kerberosIV/lib/krb/getaddrs.c b/crypto/kerberosIV/lib/krb/getaddrs.c
index d157690..c2e12b1 100644
--- a/crypto/kerberosIV/lib/krb/getaddrs.c
+++ b/crypto/kerberosIV/lib/krb/getaddrs.c
@@ -29,6 +29,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#include "krb_locl.h"
@@ -128,7 +130,7 @@ k_get_all_addrs (struct in_addr **l)
continue;
(*l)[j++] = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr;
}
- ifreq = *ifr;
+ memcpy(&ifreq, ifr, sizeof(ifreq));
}
}
if (j != num) {
diff --git a/lib/libc/rpc/get_myaddress.c b/lib/libc/rpc/get_myaddress.c
index 05fae48..eb2917e 100644
--- a/lib/libc/rpc/get_myaddress.c
+++ b/lib/libc/rpc/get_myaddress.c
@@ -81,7 +81,7 @@ again:
end = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
while (ifr < end) {
- ifreq = *ifr;
+ memcpy(&ifreq, ifr, sizeof(ifreq));
if (ioctl(s, SIOCGIFFLAGS, (char *)&ifreq) < 0) {
_close(s);
return(-1);
diff --git a/lib/libc/rpc/pmap_rmt.c b/lib/libc/rpc/pmap_rmt.c
index 55ddef9..f36acf1 100644
--- a/lib/libc/rpc/pmap_rmt.c
+++ b/lib/libc/rpc/pmap_rmt.c
@@ -189,7 +189,7 @@ getbroadcastnets(addrs, sock, buf)
ifr = (struct ifreq *)cp;
if (ifr->ifr_addr.sa_family != AF_INET)
continue;
- ifreq = *ifr;
+ memcpy(&ifreq, ifr, sizeof(ifreq));
if (ioctl(sock, SIOCGIFFLAGS, (char *)&ifreq) < 0) {
perror("broadcast: ioctl (get interface flags)");
continue;
OpenPOWER on IntegriCloud