diff options
Diffstat (limited to 'keyserver')
-rw-r--r-- | keyserver/ChangeLog | 16 | ||||
-rw-r--r-- | keyserver/Makefile.am | 2 | ||||
-rw-r--r-- | keyserver/gpgkeys_curl.c | 11 | ||||
-rw-r--r-- | keyserver/gpgkeys_finger.c | 8 | ||||
-rw-r--r-- | keyserver/gpgkeys_hkp.c | 11 | ||||
-rw-r--r-- | keyserver/gpgkeys_ldap.c | 24 | ||||
-rw-r--r-- | keyserver/ksutil.c | 62 | ||||
-rw-r--r-- | keyserver/ksutil.h | 16 |
8 files changed, 139 insertions, 11 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog index a676d470e..355a8b94b 100644 --- a/keyserver/ChangeLog +++ b/keyserver/ChangeLog @@ -1,3 +1,19 @@ +2006-09-26 Werner Koch <[email protected]> + + * gpgkeys_finger.c (get_key): Cast away signed/unsigned char ptr + mismatches. + + * ksutil.c (ks_hextobyte, ks_toupper, ks_strcasecmp): New. Use + them instead of there ascii_foo counterparts. + * gpgkeys_ldap.c (main): Replaced BUG by assert. + + * gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c, ksutil.c: + * ksutil.h: Add special license exception for OpenSSL. This helps + to avoid license conflicts if OpenLDAP or cURL is linked against + OpenSSL and we would thus indirectly link to OpenSSL. This is + considered a bug fix and forgives all possible violations, + pertaining to this issue, possibly occured in the past. + 2006-07-26 David Shaw <[email protected]> * Makefile.am: Fix missing include path for gpgkeys_finger (needs diff --git a/keyserver/Makefile.am b/keyserver/Makefile.am index dafc853f3..9233fbe8c 100644 --- a/keyserver/Makefile.am +++ b/keyserver/Makefile.am @@ -36,7 +36,7 @@ gpgkeys_curl_SOURCES = gpgkeys_curl.c ksutil.c ksutil.h other_libs = $(LIBICONV) $(LIBINTL) $(CAPLIBS) gpgkeys_ldap_CPPFLAGS = @LDAP_CPPFLAGS@ -gpgkeys_ldap_LDADD = ../util/libutil.a @LDAPLIBS@ @NETLIBS@ $(other_libs) @GETOPT@ @W32LIBS@ +gpgkeys_ldap_LDADD = @LDAPLIBS@ @NETLIBS@ $(other_libs) @GETOPT@ @W32LIBS@ gpgkeys_finger_LDADD = ../util/libutil.a @NETLIBS@ $(other_libs) @GETOPT@ @W32LIBS@ diff --git a/keyserver/gpgkeys_curl.c b/keyserver/gpgkeys_curl.c index 9e4b56729..192f9ba66 100644 --- a/keyserver/gpgkeys_curl.c +++ b/keyserver/gpgkeys_curl.c @@ -17,6 +17,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. + * + * In addition, as a special exception, the Free Software Foundation + * gives permission to link the code of the keyserver helper tools: + * gpgkeys_ldap, gpgkeys_curl and gpgkeys_hkp with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If + * you modify this file, you may extend this exception to your version + * of the file, but you are not obligated to do so. If you do not + * wish to do so, delete this exception statement from your version. */ #include <config.h> diff --git a/keyserver/gpgkeys_finger.c b/keyserver/gpgkeys_finger.c index 4124ebc72..c91022c4e 100644 --- a/keyserver/gpgkeys_finger.c +++ b/keyserver/gpgkeys_finger.c @@ -324,13 +324,13 @@ get_key (char *getkey) if(gotit) { - print_nocr(output,line); - if (!strncmp(line,END,strlen(END))) + print_nocr (output, (const char*)line); + if (!strncmp((char*)line,END,strlen(END))) break; } - else if(!strncmp(line,BEGIN,strlen(BEGIN))) + else if(!strncmp((char*)line,BEGIN,strlen(BEGIN))) { - print_nocr(output,line); + print_nocr(output, (const char*)line); gotit=1; } } diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c index e6de3634c..1692a5033 100644 --- a/keyserver/gpgkeys_hkp.c +++ b/keyserver/gpgkeys_hkp.c @@ -17,6 +17,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. + * + * In addition, as a special exception, the Free Software Foundation + * gives permission to link the code of the keyserver helper tools: + * gpgkeys_ldap, gpgkeys_curl and gpgkeys_hkp with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If + * you modify this file, you may extend this exception to your version + * of the file, but you are not obligated to do so. If you do not + * wish to do so, delete this exception statement from your version. */ #include <config.h> diff --git a/keyserver/gpgkeys_ldap.c b/keyserver/gpgkeys_ldap.c index 357c874ea..216ed1e1d 100644 --- a/keyserver/gpgkeys_ldap.c +++ b/keyserver/gpgkeys_ldap.c @@ -17,6 +17,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. + * + * In addition, as a special exception, the Free Software Foundation + * gives permission to link the code of the keyserver helper tools: + * gpgkeys_ldap, gpgkeys_curl and gpgkeys_hkp with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If + * you modify this file, you may extend this exception to your version + * of the file, but you are not obligated to do so. If you do not + * wish to do so, delete this exception statement from your version. */ #include <config.h> @@ -29,6 +40,7 @@ #endif #include <stdlib.h> #include <errno.h> +#include <assert.h> #ifdef _WIN32 #include <winsock2.h> @@ -355,7 +367,7 @@ build_attrs(LDAPMod ***modlist,char *line) if((record=strsep(&line,":"))==NULL) return; - if(ascii_strcasecmp("pub",record)==0) + if (ks_strcasecmp("pub",record)==0) { char *tok; int disabled=0,revoked=0; @@ -461,7 +473,7 @@ build_attrs(LDAPMod ***modlist,char *line) make_one_attr(modlist,"pgpDisabled",disabled?"1":"0"); make_one_attr(modlist,"pgpRevoked",revoked?"1":"0"); } - else if(ascii_strcasecmp("sub",record)==0) + else if (ks_strcasecmp("sub",record)==0) { char *tok; @@ -499,7 +511,7 @@ build_attrs(LDAPMod ***modlist,char *line) /* Ignore the rest of the items for subkeys since the LDAP schema doesn't store them. */ } - else if(ascii_strcasecmp("uid",record)==0) + else if (ks_strcasecmp("uid",record)==0) { char *userid,*tok; @@ -520,7 +532,7 @@ build_attrs(LDAPMod ***modlist,char *line) while(*tok) if(tok[0]=='%' && tok[1] && tok[2]) { - if((userid[i]=hextobyte(&tok[1]))==-1) + if((userid[i]=ks_hextobyte(&tok[1]))==-1) userid[i]='?'; i++; @@ -536,7 +548,7 @@ build_attrs(LDAPMod ***modlist,char *line) make_one_attr(modlist,"pgpUserID",userid); } - else if(ascii_strcasecmp("sig",record)==0) + else if(ks_strcasecmp("sig",record)==0) { char *tok; @@ -2325,7 +2337,7 @@ main(int argc,char *argv[]) free(searchkey); } else - BUG(); + assert (!"invalid action"); if(!failed) ret=KEYSERVER_OK; diff --git a/keyserver/ksutil.c b/keyserver/ksutil.c index 64912bb2d..c302598c4 100644 --- a/keyserver/ksutil.c +++ b/keyserver/ksutil.c @@ -17,6 +17,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. + * + * In addition, as a special exception, the Free Software Foundation + * gives permission to link the code of the keyserver helper tools: + * gpgkeys_ldap, gpgkeys_curl and gpgkeys_hkp with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If + * you modify this file, you may extend this exception to your version + * of the file, but you are not obligated to do so. If you do not + * wish to do so, delete this exception statement from your version. */ #include <config.h> @@ -538,3 +549,54 @@ curl_writer_finalize(struct curl_writer_ctx *ctx) ctx->flags.done=1; } } + +int +ks_hextobyte (const char *s) +{ + int c; + + if ( *s >= '0' && *s <= '9' ) + c = 16 * (*s - '0'); + else if ( *s >= 'A' && *s <= 'F' ) + c = 16 * (10 + *s - 'A'); + else if ( *s >= 'a' && *s <= 'f' ) + c = 16 * (10 + *s - 'a'); + else + return -1; + s++; + if ( *s >= '0' && *s <= '9' ) + c += *s - '0'; + else if ( *s >= 'A' && *s <= 'F' ) + c += 10 + *s - 'A'; + else if ( *s >= 'a' && *s <= 'f' ) + c += 10 + *s - 'a'; + else + return -1; + return c; +} + + +/* Non localized version of toupper. */ +int +ks_toupper (int c) +{ + if (c >= 'a' && c <= 'z') + c &= ~0x20; + return c; +} + + +/* Non localized version of strcasecmp. */ +int +ks_strcasecmp (const char *a, const char *b) +{ + if (a == b) + return 0; + + for (; *a && *b; a++, b++) + { + if (*a != *b && ks_toupper (*a) != ks_toupper (*b)) + break; + } + return *a == *b? 0 : (ks_toupper (*a) - ks_toupper (*b)); +} diff --git a/keyserver/ksutil.h b/keyserver/ksutil.h index 16c1ebf88..0001bbade 100644 --- a/keyserver/ksutil.h +++ b/keyserver/ksutil.h @@ -17,6 +17,17 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. + * + * In addition, as a special exception, the Free Software Foundation + * gives permission to link the code of the keyserver helper tools: + * gpgkeys_ldap, gpgkeys_curl and gpgkeys_hkp with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License + * in all respects for all of the code used other than "OpenSSL". If + * you modify this file, you may extend this exception to your version + * of the file, but you are not obligated to do so. If you do not + * wish to do so, delete this exception statement from your version. */ #ifndef _KSUTIL_H_ @@ -127,4 +138,9 @@ struct curl_writer_ctx size_t curl_writer(const void *ptr,size_t size,size_t nmemb,void *cw_ctx); void curl_writer_finalize(struct curl_writer_ctx *ctx); +int ks_hextobyte (const char *s); +int ks_toupper (int c); +int ks_strcasecmp (const char *a, const char *b); + + #endif /* !_KSUTIL_H_ */ |