1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-23 10:29:58 +01:00

* keyserver.c (parse_keyserver_uri): Allow RFC-2732 IPv6 [literal

address] syntax in keyserver URLs.  (keyserver_typemap): Map ftps if
we are supporting it.
This commit is contained in:
David Shaw 2005-01-26 21:20:30 +00:00
parent eb0ee0ba44
commit e6cbb88f61
2 changed files with 42 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2005-01-26 David Shaw <dshaw@jabberwocky.com>
* keyserver.c (parse_keyserver_uri): Allow RFC-2732 IPv6 [literal
address] syntax in keyserver URLs.
(keyserver_typemap): Map ftps if we are supporting it.
2005-01-25 Werner Koch <wk@g10code.com> 2005-01-25 Werner Koch <wk@g10code.com>
* keygen.c (do_generate_keypair): Don't continue after an error; * keygen.c (do_generate_keypair): Don't continue after an error;

View File

@ -166,12 +166,26 @@ parse_keyserver_uri(const char *uri,int require_scheme,
/* Get the scheme */ /* Get the scheme */
for(idx=uri,count=0;*idx && *idx!=':';idx++) for(idx=uri,count=0;*idx && *idx!=':';idx++)
count++; {
count++;
/* Do we see the start of an RFC-2732 ipv6 address here? If so,
there clearly isn't a scheme so get out early. */
if(*idx=='[')
{
/* Was the '[' the first thing in the string? If not, we
have a mangled scheme with a [ in it so fail. */
if(count==1)
break;
else
goto fail;
}
}
if(count==0) if(count==0)
goto fail; goto fail;
if(*idx=='\0') if(*idx=='\0' || *idx=='[')
{ {
if(require_scheme) if(require_scheme)
return NULL; return NULL;
@ -237,8 +251,22 @@ parse_keyserver_uri(const char *uri,int require_scheme,
uri+=count+1; uri+=count+1;
} }
for(idx=uri,count=0;*idx && *idx!=':' && *idx!='/';idx++) /* Is it an RFC-2732 ipv6 [literal address] ? */
count++; if(*uri=='[')
{
for(idx=uri+1,count=1;*idx
&& (isxdigit(*idx) || *idx==':' || *idx=='.');idx++)
count++;
/* Is the ipv6 literal address terminated? */
if(*idx==']')
count++;
else
goto fail;
}
else
for(idx=uri,count=0;*idx && *idx!=':' && *idx!='/';idx++)
count++;
if(count==0) if(count==0)
goto fail; goto fail;
@ -790,6 +818,10 @@ keyserver_typemap(const char *type)
else if(strcmp(type,"ftp")==0) else if(strcmp(type,"ftp")==0)
return "curl"; return "curl";
#endif #endif
#ifdef FTPS_VIA_LIBCURL
else if(strcmp(type,"ftps")==0)
return "curl";
#endif
#ifdef HTTP_VIA_LIBCURL #ifdef HTTP_VIA_LIBCURL
else if(strcmp(type,"http")==0) else if(strcmp(type,"http")==0)
return "curl"; return "curl";