diff options
author | David Shaw <[email protected]> | 2002-02-12 04:38:58 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2002-02-12 04:38:58 +0000 |
commit | dca36f62529a8d5c75778f22602f4bea32dddcf2 (patch) | |
tree | caba6ff8b5866cd1095338a6065b7872287b2e12 | |
parent | * random.c (add_randomness): Xor new data into the pool and not (diff) | |
download | gnupg-dca36f62529a8d5c75778f22602f4bea32dddcf2.tar.gz gnupg-dca36f62529a8d5c75778f22602f4bea32dddcf2.zip |
Bug fix - properly handle user IDs with colons (":") in them while HKP
searching.
-rw-r--r-- | g10/ChangeLog | 5 | ||||
-rw-r--r-- | g10/hkp.c | 36 |
2 files changed, 36 insertions, 5 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog index 79b8a3bd4..02a4f3910 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,8 @@ +2002-02-11 David Shaw <[email protected]> + + * hkp.c (parse_hkp_index): Bug fix - properly handle user IDs with + colons (":") in them while HKP searching. + 2002-02-09 David Shaw <[email protected]> * misc.c (pct_expando): More comments. @@ -1,4 +1,4 @@ -/* hkp.c - Horrowitz Keyserver Protocol +/* hkp.c - Horowitz Keyserver Protocol * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. * * This file is part of GnuPG. @@ -208,6 +208,32 @@ urlencode_filter( void *opaque, int control, return rc; } +static int +write_quoted(IOBUF a, const char *buf, char delim) +{ + char quoted[5]; + + sprintf(quoted,"\\x%02X",delim); + + while(*buf) + { + if(*buf==delim) + { + if(iobuf_writestr(a,quoted)) + return -1; + } + else + { + if(iobuf_writebyte(a,*buf)) + return -1; + } + + buf++; + } + + return 0; +} + /* pub 2048/<a href="/pks/lookup?op=get&search=0x3CB3B415">3CB3B415</a> 1998/04/03 David M. Shaw <<a href="/pks/lookup?op=get&search=0x3CB3B415">[email protected]</a>> */ /* Luckily enough, both the HKP server and NAI HKP interface to their @@ -238,16 +264,16 @@ parse_hkp_index(IOBUF buffer,char *line) { char intstr[11]; - iobuf_writestr(buffer,key); + write_quoted(buffer,key,':'); iobuf_writestr(buffer,":"); - iobuf_writestr(buffer,uid); + write_quoted(buffer,uid,':'); iobuf_writestr(buffer,":"); iobuf_writestr(buffer,revoked?"1:":":"); sprintf(intstr,"%u",createtime); - iobuf_writestr(buffer,intstr); + write_quoted(buffer,intstr,':'); iobuf_writestr(buffer,"::::"); sprintf(intstr,"%u",bits); - iobuf_writestr(buffer,intstr); + write_quoted(buffer,intstr,':'); iobuf_writestr(buffer,"\n"); ret=1; |