1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-10 13:04:23 +01:00

* keylist.c (list_keyblock_colon): Show 1F direct key signatures in

--with-colons listing.

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

* hkp.c (hkp_search): Properly handle line truncation.
This commit is contained in:
David Shaw 2002-09-19 16:32:44 +00:00
parent 32a3f9ec4b
commit d477cf2bfb
4 changed files with 30 additions and 16 deletions

View File

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

View File

@ -475,7 +475,6 @@ parse_hkp_index(IOBUF buffer,char *line)
int hkp_search(STRLIST tokens)
{
int rc=0,len=0,max,first=1;
unsigned int maxlen=1024,buflen=0;
#ifndef __riscos__
unsigned char *searchstr=NULL,*searchurl;
unsigned char *request;
@ -485,7 +484,6 @@ int hkp_search(STRLIST tokens)
#endif
struct http_context hd;
unsigned int hflags=opt.keyserver_options.honor_http_proxy?HTTP_FLAG_TRY_PROXY:0;
byte *line=NULL;
/* Glue the tokens together to make a search string */
@ -569,13 +567,17 @@ int hkp_search(STRLIST tokens)
{
IOBUF buffer;
int count=1;
int ret;
int ret=0; /* gcc wants me to initialize this */
unsigned int buflen;
byte *line=NULL;
buffer=iobuf_temp();
rc=1;
while(rc!=0)
{
unsigned int maxlen=1024;
/* This is a judgement call. Is it better to slurp up all
the results before prompting the user? On the one hand,
it probably makes the keyserver happier to not be blocked

View File

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

View File

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