Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix sent lease time on 64-bit systems - sdhcp - simple dhcp client
git clone git://git.codemadness.org/sdhcp
Log
Files
Refs
LICENSE
---
commit 90b18e7b1cfcf7ab0799b917d7c4d1318ed29f57
parent 450beea4e88ab7f80206741f18f0d5539ae60b44
Author: Michael Forney <[email protected]>
Date: Thu, 9 Feb 2017 13:42:27 -0800
Fix sent lease time on 64-bit systems
The lease time option is defined in RFC 1533 to be a 32-bit unsigned
integer. However, on 64-bit systems, unsigned long long is 64 bits, so
hnput writes 8 bytes, the first 4 of which are 0.
dnsmasq (and possibly other DHCP servers) only looks at the first 4
bytes in the option, so interprets a lease time of 0. It then sets the
lease time to a minimum of 120 seconds. This causes the server to expire
the lease long before sdhcp attempts to renew it.
Diffstat:
M sdhcp.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/sdhcp.c b/sdhcp.c
@@ -9,6 +9,7 @@
#include <fcntl.h>
#include <poll.h>
#include <signal.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -95,7 +96,7 @@ static unsigned char client[4];
static unsigned char mask[4];
static unsigned char router[4];
static unsigned char dns[4];
-static unsigned long t1;
+static uint32_t t1;
static int dflag = 1; /* change DNS in /etc/resolv.conf ? */
static int iflag = 1; /* set IP ? */
@@ -104,7 +105,7 @@ static int fflag = 0; /* run in foreground */
#define IP(a,b,c,d) (unsigned char[4]){a,b,c,d}
static void
-hnput(unsigned char *dst, unsigned long long src, size_t n)
+hnput(unsigned char *dst, uint32_t src, size_t n)
{
unsigned int i;
@@ -249,7 +250,7 @@ optput(unsigned char *p, int opt, unsigned char *data, size…
}
static unsigned char *
-hnoptput(unsigned char *p, int opt, long long data, size_t len)
+hnoptput(unsigned char *p, int opt, uint32_t data, size_t len)
{
*p++ = opt;
*p++ = (unsigned char)len;
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.