aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2002-11-04 13:49:31 +0000
committerDavid Shaw <[email protected]>2002-11-04 13:49:31 +0000
commit66c458f954b2a93686ef328fc414201e4376c132 (patch)
tree3fbc41f33e4e888a8d004b004cb4ece80c3754f2
parent* Makefile.am: Put gnupg.spec in the root directory so rpm -ta works. (diff)
downloadgnupg-66c458f954b2a93686ef328fc414201e4376c132.tar.gz
gnupg-66c458f954b2a93686ef328fc414201e4376c132.zip
* gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key): Properly handle an
input file that does not include any key data at all.
-rw-r--r--keyserver/ChangeLog5
-rw-r--r--keyserver/gpgkeys_hkp.c18
-rw-r--r--keyserver/gpgkeys_ldap.c14
3 files changed, 21 insertions, 16 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index 9f23ae10e..defe989f0 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,3 +1,8 @@
+2002-11-04 David Shaw <[email protected]>
+
+ * gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key): Properly
+ handle an input file that does not include any key data at all.
+
2002-10-28 Stefan Bellon <[email protected]>
* gpgkeys_hkp.c: Tidied up RISC OS initializations.
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index 877415ce9..859b33d6d 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -79,7 +79,7 @@ urlencode_filter( void *opaque, int control,
/* Returns 0 on success, -1 on failure, and 1 on eof */
int send_key(void)
{
- int rc,gotit=0,ret=-1;
+ int rc,begin=0,end=0,ret=-1;
char keyid[17];
char *request;
struct http_context hd;
@@ -87,6 +87,8 @@ int send_key(void)
IOBUF temp = iobuf_temp();
char line[MAX_LINE];
+ memset(&hd,0,sizeof(hd));
+
request=malloc(strlen(host)+100);
if(!request)
{
@@ -101,25 +103,23 @@ int send_key(void)
while(fgets(line,MAX_LINE,input)!=NULL)
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
{
- gotit=1;
+ begin=1;
break;
}
- if(!gotit)
+ if(!begin)
{
/* i.e. eof before the KEY BEGIN was found */
ret=1;
goto fail;
}
- gotit=0;
-
/* Now slurp up everything until we see the END */
while(fgets(line,MAX_LINE,input))
if(sscanf(line,"KEY %16s END\n",keyid)==1)
{
- gotit=1;
+ end=1;
break;
}
else
@@ -129,7 +129,7 @@ int send_key(void)
goto fail;
}
- if(!gotit)
+ if(!end)
{
fprintf(console,"gpgkeys: no KEY %s END found\n",keyid);
goto fail;
@@ -172,7 +172,6 @@ int send_key(void)
if((status/100)!=2)
{
fprintf(console,"gpgkeys: remote server returned error %d\n",status);
- fprintf(output,"KEY %s FAILED\n",keyid);
goto fail;
}
@@ -183,6 +182,9 @@ int send_key(void)
iobuf_close(temp);
http_close(&hd);
+ if(ret!=0 && begin)
+ fprintf(output,"KEY %s FAILED\n",keyid);
+
return ret;
}
diff --git a/keyserver/gpgkeys_ldap.c b/keyserver/gpgkeys_ldap.c
index 1920da7b5..0a06f2f23 100644
--- a/keyserver/gpgkeys_ldap.c
+++ b/keyserver/gpgkeys_ldap.c
@@ -61,7 +61,7 @@ RISCOS_GLOBAL_STATICS("LDAP Keyfetcher Heap")
/* Returns 0 on success, -1 on failure, and 1 on eof */
int send_key(void)
{
- int err,gotit=0,keysize=1,ret=-1;
+ int err,begin=0,end=0,keysize=1,ret=-1;
char *dn=NULL;
char line[MAX_LINE];
char *key[2]={0,0};
@@ -99,25 +99,23 @@ int send_key(void)
while(fgets(line,MAX_LINE,input)!=NULL)
if(sscanf(line,"KEY %16s BEGIN\n",keyid)==1)
{
- gotit=1;
+ begin=1;
break;
}
- if(!gotit)
+ if(!begin)
{
/* i.e. eof before the KEY BEGIN was found */
ret=1;
goto fail;
}
- gotit=0;
-
/* Now slurp up everything until we see the END */
while(fgets(line,MAX_LINE,input)!=NULL)
if(sscanf(line,"KEY %16s END\n",keyid)==1)
{
- gotit=1;
+ end=1;
break;
}
else
@@ -133,7 +131,7 @@ int send_key(void)
strcat(key[0],line);
}
- if(!gotit)
+ if(!end)
{
fprintf(console,"gpgkeys: no KEY %s END found\n",keyid);
goto fail;
@@ -154,7 +152,7 @@ int send_key(void)
free(key[0]);
free(dn);
- if(ret!=0)
+ if(ret!=0 && begin)
fprintf(output,"KEY %s FAILED\n",keyid);
return ret;