diff options
author | David Shaw <[email protected]> | 2004-12-22 18:09:41 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2004-12-22 18:09:41 +0000 |
commit | f3c33b876897392563bdc9a7e4ea97286d642308 (patch) | |
tree | 719a5d188950c19f76ea391cea3dd02bef0328af /g10/keyserver.c | |
parent | * gpgkeys_curl.c (get_key, writer): New function to wrap around fwrite to (diff) | |
download | gnupg-f3c33b876897392563bdc9a7e4ea97286d642308.tar.gz gnupg-f3c33b876897392563bdc9a7e4ea97286d642308.zip |
* options.h, keyserver.c (parse_keyserver_uri): Properly parse auth data
from URLs and pass to keyserver helpers.
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r-- | g10/keyserver.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c index 854187f74..815e784a6 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -218,6 +218,23 @@ parse_keyserver_uri(const char *uri,int require_scheme, if(!assume_hkp) uri+=2; + /* Do we have userinfo auth data present? */ + for(idx=uri,count=0;*idx && *idx!='@' && *idx!='/';idx++) + count++; + + /* We found a @ before the slash, so that means everything + before the @ is auth data. */ + if(*idx=='@') + { + if(count==0) + goto fail; + + keyserver->auth=m_alloc(count+1); + strncpy(keyserver->auth,uri,count); + keyserver->auth[count]='\0'; + uri+=count+1; + } + for(idx=uri,count=0;*idx && *idx!=':' && *idx!='/';idx++) count++; @@ -846,6 +863,9 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, fprintf(spawn->tochild,"OPAQUE %s\n",keyserver->opaque); else { + if(keyserver->auth) + fprintf(spawn->tochild,"AUTH %s\n",keyserver->auth); + if(keyserver->host) fprintf(spawn->tochild,"HOST %s\n",keyserver->host); |