mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
dirmngr: Do not use MAXDNAME.
* dirmngr/dns-stuff.c (getsrv): Replace MAXDNAME. * dirmngr/dns-stuff.h (MAXDNAME): Remove. (struct srventry): Use a fixed value instead of MAXDNAME. * dirmngr/http.c (connect_server): Use DIMof instead of MAXDNAME. Malloc a helper array. -- Depending on the order of included headers it might be that we allocate the array with a different size than what we test against in another module. To make it more robust we use the actual known size of checking. A better would be to use a linked list and avoid these large arrays. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
41bb01ae79
commit
e03a4a94bb
3 changed files with 20 additions and 15 deletions
|
@ -2251,13 +2251,23 @@ connect_server (const char *server, unsigned short port,
|
|||
if (srvtag)
|
||||
{
|
||||
/* We're using SRV, so append the tags. */
|
||||
if (1+strlen (srvtag) + 6 + strlen (server) + 1 <= MAXDNAME)
|
||||
if (1 + strlen (srvtag) + 6 + strlen (server) + 1
|
||||
<= DIMof (struct srventry, target))
|
||||
{
|
||||
char srvname[MAXDNAME];
|
||||
char *srvname = xtrymalloc (DIMof (struct srventry, target));
|
||||
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (srvname,"_"), srvtag),
|
||||
"._tcp."), server);
|
||||
srvcount = getsrv (srvname, &serverlist);
|
||||
if (!srvname) /* Out of core */
|
||||
{
|
||||
serverlist = NULL;
|
||||
srvcount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (srvname,"_"), srvtag),
|
||||
"._tcp."), server);
|
||||
srvcount = getsrv (srvname, &serverlist);
|
||||
xfree (srvname);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
@ -2273,8 +2283,8 @@ connect_server (const char *server, unsigned short port,
|
|||
if (!serverlist)
|
||||
return -1; /* Out of core. */
|
||||
serverlist->port = port;
|
||||
strncpy (serverlist->target, server, MAXDNAME);
|
||||
serverlist->target[MAXDNAME-1] = '\0';
|
||||
strncpy (serverlist->target, server, DIMof (struct srventry, target));
|
||||
serverlist->target[DIMof (struct srventry, target)-1] = '\0';
|
||||
srvcount = 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue