1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-05-28 21:50:02 +02:00

From stable branch

* keyserver.c (keyserver_spawn): Properly handle line truncation. Don't
leak memory (~10-20 bytes) on searches.
(keyserver_search_prompt): Cleanup.

* keylist.c (list_keyblock_colon): Show 1F direct key signatures in
--with-colons listing.
This commit is contained in:
David Shaw 2002-09-19 17:13:03 +00:00
parent 5e802a7256
commit c4c0b1dc5b
3 changed files with 23 additions and 13 deletions

View File

@ -1,3 +1,12 @@
2002-09-19 David Shaw <dshaw@jabberwocky.com>
* keyserver.c (keyserver_spawn): Properly handle line truncation.
Don't leak memory (~10-20 bytes) on searches.
(keyserver_search_prompt): Cleanup.
* keylist.c (list_keyblock_colon): Show 1F direct key signatures
in --with-colons listing.
2002-09-16 David Shaw <dshaw@jabberwocky.com> 2002-09-16 David Shaw <dshaw@jabberwocky.com>
* keyedit.c (menu_addrevoker): The direct key signature for * keyedit.c (menu_addrevoker): The direct key signature for

View File

@ -837,6 +837,8 @@ list_keyblock_colon( KBNODE keyblock, int secret, int fpr )
sigstr = "sig"; sigstr = "sig";
else if( sig->sig_class == 0x18 ) else if( sig->sig_class == 0x18 )
sigstr = "sig"; sigstr = "sig";
else if( sig->sig_class == 0x1F )
sigstr = "sig";
else { else {
printf ("sig::::::::::%02x%c:\n", printf ("sig::::::::::%02x%c:\n",
sig->sig_class, sig->flags.exportable?'x':'l'); sig->sig_class, sig->flags.exportable?'x':'l');

View File

@ -334,7 +334,7 @@ keyserver_spawn(int action,STRLIST list,
{ {
int ret=0,i,gotversion=0,outofband=0; int ret=0,i,gotversion=0,outofband=0;
STRLIST temp; STRLIST temp;
unsigned int maxlen=256,buflen; unsigned int maxlen,buflen;
char *command=NULL,*searchstr=NULL; char *command=NULL,*searchstr=NULL;
byte *line=NULL; byte *line=NULL;
struct kopts *kopts; struct kopts *kopts;
@ -544,6 +544,7 @@ keyserver_spawn(int action,STRLIST list,
char *ptr; char *ptr;
int plen; int plen;
maxlen=1024;
if(iobuf_read_line(spawn->fromchild,&line,&buflen,&maxlen)==0) if(iobuf_read_line(spawn->fromchild,&line,&buflen,&maxlen)==0)
{ {
ret=G10ERR_READ_FILE; ret=G10ERR_READ_FILE;
@ -582,8 +583,6 @@ keyserver_spawn(int action,STRLIST list,
outofband=1; /* Currently the only OPTION */ outofband=1; /* Currently the only OPTION */
} }
m_free(line);
if(!gotversion) if(!gotversion)
{ {
log_error(_("keyserver did not send VERSION\n")); log_error(_("keyserver did not send VERSION\n"));
@ -599,12 +598,12 @@ keyserver_spawn(int action,STRLIST list,
stats_handle=import_new_stats_handle(); stats_handle=import_new_stats_handle();
/* Slurp up all the key data. In the future, it might be nice /* Slurp up all the key data. In the future, it might be
to look for KEY foo OUTOFBAND and FAILED indicators. It's nice to look for KEY foo OUTOFBAND and FAILED indicators.
harmless to ignore them, but ignoring them does make gpg It's harmless to ignore them, but ignoring them does make
complain about "no valid OpenPGP data found". One way to gpg complain about "no valid OpenPGP data found". One
do this could be to continue parsing this line-by-line and way to do this could be to continue parsing this
make a temp iobuf for each key. */ line-by-line and make a temp iobuf for each key. */
import_keys_stream(spawn->fromchild,0,stats_handle, import_keys_stream(spawn->fromchild,0,stats_handle,
opt.keyserver_options.import_options); opt.keyserver_options.import_options);
@ -621,12 +620,10 @@ keyserver_spawn(int action,STRLIST list,
case SEARCH: case SEARCH:
{ {
line=NULL;
buflen = 0;
maxlen = 80;
/* Look for the COUNT line */ /* Look for the COUNT line */
do do
{ {
maxlen=1024;
if(iobuf_read_line(spawn->fromchild,&line,&buflen,&maxlen)==0) if(iobuf_read_line(spawn->fromchild,&line,&buflen,&maxlen)==0)
{ {
ret=G10ERR_READ_FILE; ret=G10ERR_READ_FILE;
@ -646,6 +643,8 @@ keyserver_spawn(int action,STRLIST list,
} }
fail: fail:
m_free(line);
*prog=exec_finish(spawn); *prog=exec_finish(spawn);
return ret; return ret;
@ -969,7 +968,7 @@ void
keyserver_search_prompt(IOBUF buffer,int count,const char *searchstr) keyserver_search_prompt(IOBUF buffer,int count,const char *searchstr)
{ {
int i=0,validcount=1; int i=0,validcount=1;
unsigned int maxlen=256,buflen=0; unsigned int maxlen,buflen;
KEYDB_SEARCH_DESC *desc; KEYDB_SEARCH_DESC *desc;
byte *line=NULL; byte *line=NULL;
char *answer; char *answer;