On big endian platforms with type long >32bit the range option applied a bad base address

This commit is contained in:
Gerhard Rieger 2014-02-15 15:57:40 +01:00
parent 0fad8877fd
commit bf17d38dab
2 changed files with 5 additions and 2 deletions

View file

@ -27,6 +27,9 @@ corrections:
Changed some variable definitions to make gcc -O2 aliasing checker happy Changed some variable definitions to make gcc -O2 aliasing checker happy
Thanks to Ilya Gordeev for reporting these warnings Thanks to Ilya Gordeev for reporting these warnings
On big endian platforms with type long >32bit the range option applied a
bad base address. Thanks to hejia hejia for reporting and fixing this bug.
porting: porting:
Performed changes for Fedora release 19 Performed changes for Fedora release 19

View file

@ -1,5 +1,5 @@
/* source: xio-ip4.c */ /* source: xio-ip4.c */
/* Copyright Gerhard Rieger 2001-2008 */ /* Copyright Gerhard Rieger */
/* Published under the GNU General Public License V.2, see file COPYING */ /* Published under the GNU General Public License V.2, see file COPYING */
/* this file contains the source for IP4 related functions */ /* this file contains the source for IP4 related functions */
@ -55,7 +55,7 @@ int xioparsenetwork_ip4(const char *rangename, struct xiorange *range) {
free(rangename1); free(rangename1);
return STAT_NORETRY; return STAT_NORETRY;
} }
netaddr_in->s_addr = *(unsigned long *)nameaddr->h_addr_list[0]; netaddr_in->s_addr = *(uint32_t *)nameaddr->h_addr_list[0];
} }
free(rangename1); free(rangename1);
return STAT_OK; return STAT_OK;