diff options
author | David Shaw <dshaw@jabberwocky.com> | 2002-09-19 19:13:03 +0200 |
---|---|---|
committer | David Shaw <dshaw@jabberwocky.com> | 2002-09-19 19:13:03 +0200 |
commit | c4c0b1dc5be1bdb9b01a29f15e4bc8d4ea465a8a (patch) | |
tree | 5a45d2c4981436a0e1321dd7cb6b2c532bacef34 /g10/keyserver.c | |
parent | * gpgkeys_hkp.c (get_key, handle_old_hkp_index, search_key): Properly (diff) | |
download | gnupg2-c4c0b1dc5be1bdb9b01a29f15e4bc8d4ea465a8a.tar.xz gnupg2-c4c0b1dc5be1bdb9b01a29f15e4bc8d4ea465a8a.zip |
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.
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r-- | g10/keyserver.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c index 96f8777ab..f054acf5c 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -334,7 +334,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; @@ -544,6 +544,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; @@ -582,8 +583,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")); @@ -599,12 +598,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); @@ -621,12 +620,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; @@ -646,6 +643,8 @@ keyserver_spawn(int action,STRLIST list, } fail: + m_free(line); + *prog=exec_finish(spawn); return ret; @@ -969,7 +968,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; |