mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-10-29 12:50:47 +00:00
Remove arbitrary limit on config file line lengths.
Stop using the namebuff buffer to read config file
lines. This reduced in size in
014e909f78 and caused
regressions. We now resize the buffer as needed,
so there is no practical limit.
Use the same code to remove the same limit when reading
/etc/ethers and /etc/resolv.conf. Also when copying output
from the lease-change script into the log.
Thanks to Kevin Darbyshire-Bryant for finding the regresssion.
This commit is contained in:
7 files changed
+109
-59
No files matched your search
+7
-6
@@ -1407,9 +1407,10 @@ static int eatspace(FILE *f)
|
||||
}
|
||||
}
|
||||
|
||||
static int gettok(FILE *f, char *token)
|
||||
static int gettok(FILE *f, char *token, size_t buffsz)
|
||||
{
|
||||
int c, count = 0;
|
||||
int c;
|
||||
unsigned int count = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
@@ -1422,7 +1423,7 @@ static int gettok(FILE *f, char *token)
|
||||
return eatspace(f);
|
||||
}
|
||||
|
||||
if (count < (MAXDNAMESTR - 1))
|
||||
if (count < (buffsz - 1))
|
||||
{
|
||||
token[count++] = c;
|
||||
token[count] = 0;
|
||||
@@ -1447,7 +1448,7 @@ int read_hostsfile(char *filename, unsigned int index, int cache_size, struct cr
|
||||
|
||||
lineno += eatspace(f);
|
||||
|
||||
while ((atnl = gettok(f, token)) != -1)
|
||||
while ((atnl = gettok(f, token, MAXDNAMESTR)) != -1)
|
||||
{
|
||||
if (inet_pton(AF_INET, token, &addr) > 0)
|
||||
{
|
||||
@@ -1465,7 +1466,7 @@ int read_hostsfile(char *filename, unsigned int index, int cache_size, struct cr
|
||||
{
|
||||
my_syslog(LOG_ERR, _("bad address at %s line %d"), filename, lineno);
|
||||
while (atnl == 0)
|
||||
atnl = gettok(f, token);
|
||||
atnl = gettok(f, token, MAXDNAMESTR);
|
||||
lineno += atnl;
|
||||
continue;
|
||||
}
|
||||
@@ -1483,7 +1484,7 @@ int read_hostsfile(char *filename, unsigned int index, int cache_size, struct cr
|
||||
int fqdn, nomem;
|
||||
char *canon;
|
||||
|
||||
if ((atnl = gettok(f, token)) == -1)
|
||||
if ((atnl = gettok(f, token, MAXDNAMESTR)) == -1)
|
||||
break;
|
||||
|
||||
fqdn = !!strchr(token, '.');
|
||||
|
||||
Reference in new issue
Block a user