mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
* gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key, send_key_keyserver):
Fix string matching problem when the ascii armored form of the key happens to match "KEY" at the beginning of the line.
This commit is contained in:
parent
5476afe1b4
commit
2dc880aa9e
@ -1,3 +1,10 @@
|
|||||||
|
2006-07-14 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key,
|
||||||
|
send_key_keyserver): Fix string matching problem when the ascii
|
||||||
|
armored form of the key happens to match "KEY" at the beginning of
|
||||||
|
the line.
|
||||||
|
|
||||||
2006-07-12 David Shaw <dshaw@jabberwocky.com>
|
2006-07-12 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* gpgkeys_ldap.c (printquoted), curl-shim.c (curl_escape): Fix bad
|
* gpgkeys_ldap.c (printquoted), curl-shim.c (curl_escape): Fix bad
|
||||||
|
@ -86,7 +86,7 @@ send_key(int *eof)
|
|||||||
CURLcode res;
|
CURLcode res;
|
||||||
char request[MAX_URL+15];
|
char request[MAX_URL+15];
|
||||||
int begin=0,end=0,ret=KEYSERVER_INTERNAL_ERROR;
|
int begin=0,end=0,ret=KEYSERVER_INTERNAL_ERROR;
|
||||||
char keyid[17];
|
char keyid[17],state[6];
|
||||||
char line[MAX_LINE];
|
char line[MAX_LINE];
|
||||||
char *key=NULL,*encoded_key=NULL;
|
char *key=NULL,*encoded_key=NULL;
|
||||||
size_t keylen=0,keymax=0;
|
size_t keylen=0,keymax=0;
|
||||||
@ -94,7 +94,8 @@ send_key(int *eof)
|
|||||||
/* Read and throw away input until we see the BEGIN */
|
/* Read and throw away input until we see the BEGIN */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %5s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"BEGIN")==0)
|
||||||
{
|
{
|
||||||
begin=1;
|
begin=1;
|
||||||
break;
|
break;
|
||||||
@ -112,7 +113,8 @@ send_key(int *eof)
|
|||||||
/* Now slurp up everything until we see the END */
|
/* Now slurp up everything until we see the END */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input))
|
while(fgets(line,MAX_LINE,input))
|
||||||
if(sscanf(line,"KEY %16s END\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %3s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"END")==0)
|
||||||
{
|
{
|
||||||
end=1;
|
end=1;
|
||||||
break;
|
break;
|
||||||
@ -194,6 +196,7 @@ send_key(int *eof)
|
|||||||
{
|
{
|
||||||
fprintf(console,"gpgkeys: HTTP post error %d: %s\n",res,errorbuffer);
|
fprintf(console,"gpgkeys: HTTP post error %d: %s\n",res,errorbuffer);
|
||||||
ret=curl_err_to_gpg_err(res);
|
ret=curl_err_to_gpg_err(res);
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf(output,"\nKEY %s SENT\n",keyid);
|
fprintf(output,"\nKEY %s SENT\n",keyid);
|
||||||
|
@ -567,7 +567,7 @@ send_key(int *eof)
|
|||||||
{
|
{
|
||||||
int err,begin=0,end=0,keysize=1,ret=KEYSERVER_INTERNAL_ERROR;
|
int err,begin=0,end=0,keysize=1,ret=KEYSERVER_INTERNAL_ERROR;
|
||||||
char *dn=NULL,line[MAX_LINE],*key=NULL;
|
char *dn=NULL,line[MAX_LINE],*key=NULL;
|
||||||
char keyid[17];
|
char keyid[17],state[6];
|
||||||
LDAPMod **modlist,**addlist,**ml;
|
LDAPMod **modlist,**addlist,**ml;
|
||||||
|
|
||||||
modlist=malloc(sizeof(LDAPMod *));
|
modlist=malloc(sizeof(LDAPMod *));
|
||||||
@ -608,7 +608,8 @@ send_key(int *eof)
|
|||||||
/* Assemble the INFO stuff into LDAP attributes */
|
/* Assemble the INFO stuff into LDAP attributes */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"INFO %16s BEGIN\n",keyid)==1)
|
if(sscanf(line,"INFO %16s %5s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"BEGIN")==0)
|
||||||
{
|
{
|
||||||
begin=1;
|
begin=1;
|
||||||
break;
|
break;
|
||||||
@ -653,7 +654,8 @@ send_key(int *eof)
|
|||||||
/* Now parse each line until we see the END */
|
/* Now parse each line until we see the END */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"INFO %16s END\n",keyid)==1)
|
if(sscanf(line,"INFO %16s %3s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"END")==0)
|
||||||
{
|
{
|
||||||
end=1;
|
end=1;
|
||||||
break;
|
break;
|
||||||
@ -674,7 +676,8 @@ send_key(int *eof)
|
|||||||
/* Read and throw away stdin until we see the BEGIN */
|
/* Read and throw away stdin until we see the BEGIN */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %5s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"BEGIN")==0)
|
||||||
{
|
{
|
||||||
begin=1;
|
begin=1;
|
||||||
break;
|
break;
|
||||||
@ -692,7 +695,8 @@ send_key(int *eof)
|
|||||||
/* Now slurp up everything until we see the END */
|
/* Now slurp up everything until we see the END */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"KEY %16s END\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %3s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"END")==0)
|
||||||
{
|
{
|
||||||
end=1;
|
end=1;
|
||||||
break;
|
break;
|
||||||
@ -778,7 +782,7 @@ send_key_keyserver(int *eof)
|
|||||||
{
|
{
|
||||||
int err,begin=0,end=0,keysize=1,ret=KEYSERVER_INTERNAL_ERROR;
|
int err,begin=0,end=0,keysize=1,ret=KEYSERVER_INTERNAL_ERROR;
|
||||||
char *dn=NULL,line[MAX_LINE],*key[2]={NULL,NULL};
|
char *dn=NULL,line[MAX_LINE],*key[2]={NULL,NULL};
|
||||||
char keyid[17];
|
char keyid[17],state[6];
|
||||||
LDAPMod mod, *attrs[2];
|
LDAPMod mod, *attrs[2];
|
||||||
|
|
||||||
memset(&mod,0,sizeof(mod));
|
memset(&mod,0,sizeof(mod));
|
||||||
@ -812,7 +816,8 @@ send_key_keyserver(int *eof)
|
|||||||
/* Read and throw away stdin until we see the BEGIN */
|
/* Read and throw away stdin until we see the BEGIN */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %5s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"BEGIN")==0)
|
||||||
{
|
{
|
||||||
begin=1;
|
begin=1;
|
||||||
break;
|
break;
|
||||||
@ -830,7 +835,8 @@ send_key_keyserver(int *eof)
|
|||||||
/* Now slurp up everything until we see the END */
|
/* Now slurp up everything until we see the END */
|
||||||
|
|
||||||
while(fgets(line,MAX_LINE,input)!=NULL)
|
while(fgets(line,MAX_LINE,input)!=NULL)
|
||||||
if(sscanf(line,"KEY %16s END\n",keyid)==1)
|
if(sscanf(line,"KEY %16s %3s\n",keyid,state)==2
|
||||||
|
&& strcmp(state,"END")==0)
|
||||||
{
|
{
|
||||||
end=1;
|
end=1;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user