From 87c6b15c7d354ab52cb1f7b785b233293800eca1 Mon Sep 17 00:00:00 2001 From: Gustavo Zacarias Date: Sun, 12 May 2013 03:55:23 +0000 Subject: dnsmasq: bump to version 2.66 Signed-off-by: Gustavo Zacarias Signed-off-by: Peter Korsgaard --- .../dnsmasq-01-fix-wrong-size-in-memset-call.patch | 27 ++++ ...-number-zero-in-encapsulated-dhcp-options.patch | 143 +++++++++++++++++++++ package/dnsmasq/dnsmasq.mk | 2 +- 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 package/dnsmasq/dnsmasq-01-fix-wrong-size-in-memset-call.patch create mode 100644 package/dnsmasq/dnsmasq-02-allow-option-number-zero-in-encapsulated-dhcp-options.patch (limited to 'package/dnsmasq') diff --git a/package/dnsmasq/dnsmasq-01-fix-wrong-size-in-memset-call.patch b/package/dnsmasq/dnsmasq-01-fix-wrong-size-in-memset-call.patch new file mode 100644 index 000000000..536552a60 --- /dev/null +++ b/package/dnsmasq/dnsmasq-01-fix-wrong-size-in-memset-call.patch @@ -0,0 +1,27 @@ +From 4582c0efe7d7af93517b1f3bcc7af67685ab3e5c Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Thu, 18 Apr 2013 09:47:49 +0100 +Subject: [PATCH] Fix wrong size in memset() call. + +Thanks to Dave Reisner. + +Signed-off-by: Gustavo Zacarias +--- + src/ipset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ipset.c b/src/ipset.c +index a34ed96..f175fa4 100644 +--- a/src/ipset.c ++++ b/src/ipset.c +@@ -110,7 +110,7 @@ static int new_add_to_ipset(const char *setname, const struct all_addr *ipaddr, + return -1; + } + +- memset(buffer, 0, sizeof(buffer)); ++ memset(buffer, 0, BUFF_SZ); + + nlh = (struct nlmsghdr *)buffer; + nlh->nlmsg_len = NL_ALIGN(sizeof(struct nlmsghdr)); +-- +1.8.1.5 diff --git a/package/dnsmasq/dnsmasq-02-allow-option-number-zero-in-encapsulated-dhcp-options.patch b/package/dnsmasq/dnsmasq-02-allow-option-number-zero-in-encapsulated-dhcp-options.patch new file mode 100644 index 000000000..79f57bf8f --- /dev/null +++ b/package/dnsmasq/dnsmasq-02-allow-option-number-zero-in-encapsulated-dhcp-options.patch @@ -0,0 +1,143 @@ +From bd08ae67f9a0cae2ce15be885254cad9449d4551 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Fri, 19 Apr 2013 10:22:06 +0100 +Subject: [PATCH] Allow option number zero in encapsulated DHCP options. + + +Signed-off-by: Gustavo Zacarias +--- + src/dhcp-common.c | 6 +++--- + src/dnsmasq.h | 4 ++-- + src/option.c | 33 ++++++++++++++++++++------------- + 3 files changed, 25 insertions(+), 18 deletions(-) + +diff --git a/src/dhcp-common.c b/src/dhcp-common.c +index f4fd088..8de4268 100644 +--- a/src/dhcp-common.c ++++ b/src/dhcp-common.c +@@ -512,7 +512,7 @@ void display_opts6(void) + } + #endif + +-u16 lookup_dhcp_opt(int prot, char *name) ++int lookup_dhcp_opt(int prot, char *name) + { + const struct opttab_t *t; + int i; +@@ -528,10 +528,10 @@ u16 lookup_dhcp_opt(int prot, char *name) + if (strcasecmp(t[i].name, name) == 0) + return t[i].val; + +- return 0; ++ return -1; + } + +-u16 lookup_dhcp_len(int prot, u16 val) ++int lookup_dhcp_len(int prot, int val) + { + const struct opttab_t *t; + int i; +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 69ae7a7..41e2798 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -1216,8 +1216,8 @@ void log_tags(struct dhcp_netid *netid, u32 xid); + int match_bytes(struct dhcp_opt *o, unsigned char *p, int len); + void dhcp_update_configs(struct dhcp_config *configs); + void display_opts(void); +-u16 lookup_dhcp_opt(int prot, char *name); +-u16 lookup_dhcp_len(int prot, u16 val); ++int lookup_dhcp_opt(int prot, char *name); ++int lookup_dhcp_len(int prot, int val); + char *option_string(int prot, unsigned int opt, unsigned char *val, + int opt_len, char *buf, int buf_len); + #ifdef HAVE_LINUX_NETWORK +diff --git a/src/option.c b/src/option.c +index b2596ec..2a61017 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -750,6 +750,7 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) + struct dhcp_netid *np = NULL; + u16 opt_len = 0; + int is6 = 0; ++ int option_ok = 0; + + new->len = 0; + new->flags = flags; +@@ -769,16 +770,19 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) + { + new->opt = atoi(arg); + opt_len = 0; ++ option_ok = 1; + break; + } + + if (strstr(arg, "option:") == arg) + { +- new->opt = lookup_dhcp_opt(AF_INET, arg+7); +- opt_len = lookup_dhcp_len(AF_INET, new->opt); +- /* option: must follow tag and vendor string. */ +- if ((opt_len & OT_INTERNAL) && flags != DHOPT_MATCH) +- new->opt = 0; ++ if ((new->opt = lookup_dhcp_opt(AF_INET, arg+7)) != -1) ++ { ++ opt_len = lookup_dhcp_len(AF_INET, new->opt); ++ /* option: must follow tag and vendor string. */ ++ if (!(opt_len & OT_INTERNAL) || flags == DHOPT_MATCH) ++ option_ok = 1; ++ } + break; + } + #ifdef HAVE_DHCP6 +@@ -792,13 +796,16 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) + { + new->opt = atoi(arg+8); + opt_len = 0; ++ option_ok = 1; + } + else + { +- new->opt = lookup_dhcp_opt(AF_INET6, arg+8); +- opt_len = lookup_dhcp_len(AF_INET6, new->opt); +- if ((opt_len & OT_INTERNAL) && flags != DHOPT_MATCH) +- new->opt = 0; ++ if ((new->opt = lookup_dhcp_opt(AF_INET6, arg+8)) != -1) ++ { ++ opt_len = lookup_dhcp_len(AF_INET6, new->opt); ++ if (!(opt_len & OT_INTERNAL) || flags == DHOPT_MATCH) ++ option_ok = 1; ++ } + } + /* option6:| must follow tag and vendor string. */ + is6 = 1; +@@ -821,7 +828,7 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) + new->flags |= DHOPT_RFC3925; + if (flags == DHOPT_MATCH) + { +- new->opt = 1; /* avoid error below */ ++ option_ok = 1; + break; + } + } +@@ -848,16 +855,16 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) + + if (opt_len == 0 && + !(new->flags & DHOPT_RFC3925)) +- opt_len = lookup_dhcp_len(AF_INET6 ,new->opt); ++ opt_len = lookup_dhcp_len(AF_INET6, new->opt); + } + else + #endif + if (opt_len == 0 && + !(new->flags & (DHOPT_VENDOR | DHOPT_ENCAPSULATE | DHOPT_RFC3925))) +- opt_len = lookup_dhcp_len(AF_INET ,new->opt); ++ opt_len = lookup_dhcp_len(AF_INET, new->opt); + + /* option may be missing with rfc3925 match */ +- if (new->opt == 0) ++ if (!option_ok) + ret_err(_("bad dhcp-option")); + + if (comma) +-- +1.8.1.5 diff --git a/package/dnsmasq/dnsmasq.mk b/package/dnsmasq/dnsmasq.mk index 8fb1fb194..04e3630c2 100644 --- a/package/dnsmasq/dnsmasq.mk +++ b/package/dnsmasq/dnsmasq.mk @@ -4,7 +4,7 @@ # ############################################################# -DNSMASQ_VERSION = 2.65 +DNSMASQ_VERSION = 2.66 DNSMASQ_SITE = http://thekelleys.org.uk/dnsmasq DNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC="$(TARGET_CC)" DNSMASQ_MAKE_OPT = COPTS="$(DNSMASQ_COPTS)" PREFIX=/usr CFLAGS="$(TARGET_CFLAGS)" -- cgit v1.2.3