mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Don't erroneously reject some option names in --dhcp-match
This commit is contained in:
@@ -46,6 +46,9 @@ version 2.66
|
|||||||
Add --ipset option. Thanks to Jason A. Donenfeld for the
|
Add --ipset option. Thanks to Jason A. Donenfeld for the
|
||||||
patch.
|
patch.
|
||||||
|
|
||||||
|
Don't erroneously reject some option names in --dhcp-match
|
||||||
|
options. Thnaks to Benedikt Hochstrasser for the bug report.
|
||||||
|
|
||||||
|
|
||||||
version 2.65
|
version 2.65
|
||||||
Fix regression which broke forwarding of queries sent via
|
Fix regression which broke forwarding of queries sent via
|
||||||
|
|||||||
@@ -518,8 +518,7 @@ u16 lookup_dhcp_opt(int prot, char *name)
|
|||||||
t = opttab;
|
t = opttab;
|
||||||
|
|
||||||
for (i = 0; t[i].name; i++)
|
for (i = 0; t[i].name; i++)
|
||||||
if (!(t[i].size & OT_INTERNAL) &&
|
if (strcasecmp(t[i].name, name) == 0)
|
||||||
strcasecmp(t[i].name, name) == 0)
|
|
||||||
return t[i].val;
|
return t[i].val;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -539,14 +538,9 @@ u16 lookup_dhcp_len(int prot, u16 val)
|
|||||||
|
|
||||||
for (i = 0; t[i].name; i++)
|
for (i = 0; t[i].name; i++)
|
||||||
if (val == t[i].val)
|
if (val == t[i].val)
|
||||||
{
|
return t[i].size & ~OT_DEC;
|
||||||
if (t[i].size & OT_INTERNAL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return t[i].size & ~OT_DEC;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *option_string(int prot, unsigned int opt, unsigned char *val, int opt_len, char *buf, int buf_len)
|
char *option_string(int prot, unsigned int opt, unsigned char *val, int opt_len, char *buf, int buf_len)
|
||||||
|
|||||||
@@ -768,6 +768,8 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
|
|||||||
new->opt = lookup_dhcp_opt(AF_INET, arg+7);
|
new->opt = lookup_dhcp_opt(AF_INET, arg+7);
|
||||||
opt_len = lookup_dhcp_len(AF_INET, new->opt);
|
opt_len = lookup_dhcp_len(AF_INET, new->opt);
|
||||||
/* option:<optname> must follow tag and vendor string. */
|
/* option:<optname> must follow tag and vendor string. */
|
||||||
|
if ((opt_len & OT_INTERNAL) && flags != DHOPT_MATCH)
|
||||||
|
new->opt = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
@@ -786,6 +788,8 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
|
|||||||
{
|
{
|
||||||
new->opt = lookup_dhcp_opt(AF_INET6, arg+8);
|
new->opt = lookup_dhcp_opt(AF_INET6, arg+8);
|
||||||
opt_len = lookup_dhcp_len(AF_INET6, new->opt);
|
opt_len = lookup_dhcp_len(AF_INET6, new->opt);
|
||||||
|
if ((opt_len & OT_INTERNAL) && flags != DHOPT_MATCH)
|
||||||
|
new->opt = 0;
|
||||||
}
|
}
|
||||||
/* option6:<opt>|<optname> must follow tag and vendor string. */
|
/* option6:<opt>|<optname> must follow tag and vendor string. */
|
||||||
is6 = 1;
|
is6 = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user