1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-03-28 22:49:59 +01:00

* gpgkeys_hkp.c (search_key): Catch a mangled input file (useful if

something other than GnuPG is calling the program). (main): Avoid possible
pre-string write.  Noted by Christian Biere.

* gpgkeys_ldap.c (main): Avoid possible pre-string write.
This commit is contained in:
David Shaw 2004-01-12 04:09:37 +00:00
parent f7bcce823f
commit 580faa8675
3 changed files with 22 additions and 5 deletions

View File

@ -1,3 +1,12 @@
2004-01-11 David Shaw <dshaw@jabberwocky.com>
* gpgkeys_hkp.c (search_key): Catch a mangled input file (useful
if something other than GnuPG is calling the program).
(main): Avoid possible pre-string write. Noted by Christian
Biere.
* gpgkeys_ldap.c (main): Avoid possible pre-string write.
2003-12-28 David Shaw <dshaw@jabberwocky.com> 2003-12-28 David Shaw <dshaw@jabberwocky.com>
* gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code * gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code

View File

@ -653,6 +653,12 @@ search_key(char *searchkey)
skey++; skey++;
} }
if(!search)
{
fprintf(console,"gpgkeys: corrupt input?\n");
return -1;
}
search[len]='\0'; search[len]='\0';
fprintf(console,("gpgkeys: searching for \"%s\" from HKP server %s\n"), fprintf(console,("gpgkeys: searching for \"%s\" from HKP server %s\n"),
@ -939,7 +945,7 @@ main(int argc,char *argv[])
break; break;
else else
{ {
if(line[0]=='\n') if(line[0]=='\n' || line[0]=='\0')
break; break;
work=malloc(sizeof(struct keylist)); work=malloc(sizeof(struct keylist));
@ -1069,7 +1075,8 @@ main(int argc,char *argv[])
} }
/* Nail that last space */ /* Nail that last space */
searchkey[strlen(searchkey)-1]='\0'; if(*searchkey)
searchkey[strlen(searchkey)-1]='\0';
if(search_key(searchkey)!=KEYSERVER_OK) if(search_key(searchkey)!=KEYSERVER_OK)
failed++; failed++;

View File

@ -548,7 +548,7 @@ search_key(char *searchkey)
LDAPMessage *res,*each; LDAPMessage *res,*each;
int err,count=0; int err,count=0;
struct keylist *dupelist=NULL; struct keylist *dupelist=NULL;
/* The maxium size of the search, including the optional stuff and /* The maximum size of the search, including the optional stuff and
the trailing \0 */ the trailing \0 */
char search[2+12+MAX_LINE+2+15+14+1+1]; char search[2+12+MAX_LINE+2+15+14+1+1];
char *attrs[]={"pgpcertid","pgpuserid","pgprevoked","pgpdisabled", char *attrs[]={"pgpcertid","pgpuserid","pgprevoked","pgpdisabled",
@ -962,7 +962,7 @@ main(int argc,char *argv[])
break; break;
else else
{ {
if(line[0]=='\n') if(line[0]=='\n' || line[0]=='\0')
break; break;
work=malloc(sizeof(struct keylist)); work=malloc(sizeof(struct keylist));
@ -1160,7 +1160,8 @@ main(int argc,char *argv[])
} }
/* Nail that last "*" */ /* Nail that last "*" */
searchkey[strlen(searchkey)-1]='\0'; if(*searchkey)
searchkey[strlen(searchkey)-1]='\0';
if(search_key(searchkey)!=KEYSERVER_OK) if(search_key(searchkey)!=KEYSERVER_OK)
failed++; failed++;