aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Harper Mann <harpermann@users.sourceforge.net> 2005-01-25 18:11:21 +0000
committerGravatar Harper Mann <harpermann@users.sourceforge.net> 2005-01-25 18:11:21 +0000
commit60780d270fd4ea626023209ae6b159040699f860 (patch)
tree498b29bca77ababf0c205633326e974f8fdf728b
parent13411c14f4512edcbc4da82f8202e57a7658208f (diff)
downloadmonitoring-plugins-60780d270fd4ea626023209ae6b159040699f860.tar.gz
Tracker:1109261 This was an alignment problem on Solaris. Linux kernel fixes alignment so this was not seen there. Memcpy takes care of proper alignment. Tested on RHEL V3 U3, RHEL V4, FreeBSD 4.10 (Thanks Stanley!) and Solaris 9 with the GNU env.
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1105 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/check_dhcp.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/plugins/check_dhcp.c b/plugins/check_dhcp.c
index 6703c57c..a3e0c53c 100644
--- a/plugins/check_dhcp.c
+++ b/plugins/check_dhcp.c
@@ -770,12 +770,21 @@ int add_dhcp_offer(struct in_addr source,dhcp_packet *offer_packet){
printf("Option: %d (0x%02X)\n",option_type,option_length);
/* get option data */
- if(option_type==DHCP_OPTION_LEASE_TIME)
- dhcp_lease_time=ntohl(*((u_int32_t *)&offer_packet->options[x]));
- if(option_type==DHCP_OPTION_RENEWAL_TIME)
- dhcp_renewal_time=ntohl(*((u_int32_t *)&offer_packet->options[x]));
- if(option_type==DHCP_OPTION_REBINDING_TIME)
- dhcp_rebinding_time=ntohl(*((u_int32_t *)&offer_packet->options[x]));
+ if(option_type==DHCP_OPTION_LEASE_TIME) {
+ memcpy(&dhcp_lease_time, &offer_packet->options[x],
+ sizeof(dhcp_lease_time));
+ dhcp_lease_time = ntohl(dhcp_lease_time);
+ }
+ if(option_type==DHCP_OPTION_RENEWAL_TIME) {
+ memcpy(&dhcp_renewal_time, &offer_packet->options[x],
+ sizeof(dhcp_renewal_time));
+ dhcp_renewal_time = ntohl(dhcp_renewal_time);
+ }
+ if(option_type==DHCP_OPTION_REBINDING_TIME) {
+ memcpy(&dhcp_rebinding_time, &offer_packet->options[x],
+ sizeof(dhcp_rebinding_time));
+ dhcp_rebinding_time = ntohl(dhcp_rebinding_time);
+ }
/* skip option data we're ignoring */
else