summaryrefslogtreecommitdiffstats
path: root/keyserver
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2006-09-22 13:39:45 +0200
committerWerner Koch <wk@gnupg.org>2006-09-22 13:39:45 +0200
commitb0a06d18a4a4e5c3a17a5b3d187d808aabd837f0 (patch)
tree1bdc17b3307a2d9ef7f61c6131a089809faafec8 /keyserver
parentVarious updates (diff)
downloadgnupg2-b0a06d18a4a4e5c3a17a5b3d187d808aabd837f0.tar.xz
gnupg2-b0a06d18a4a4e5c3a17a5b3d187d808aabd837f0.zip
Clarified cURL and OpenLDAP license issues.
Made readline support work.
Diffstat (limited to 'keyserver')
-rw-r--r--keyserver/ChangeLog22
-rw-r--r--keyserver/Makefile.am12
-rw-r--r--keyserver/curl-shim.c11
-rw-r--r--keyserver/curl-shim.h11
-rw-r--r--keyserver/gpgkeys_curl.c11
-rw-r--r--keyserver/gpgkeys_finger.c8
-rw-r--r--keyserver/gpgkeys_hkp.c11
-rw-r--r--keyserver/gpgkeys_ldap.c24
-rw-r--r--keyserver/ksutil.c63
-rw-r--r--keyserver/ksutil.h22
10 files changed, 178 insertions, 17 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index d58e1c8df..7a9851555 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,3 +1,25 @@
+2006-09-22 Werner Koch <wk@g10code.com>
+
+ * gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c, curl-shim.c:
+ * curl-shim.h, 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.
+
+ * Makefile.am (gpg2keys_ldap_LDADD): For license reasons do not
+ link against common_libs.
+ (gpg2keys_curl_LDADD, gpg2keys_hkp_LDADD): Ditto.
+ * ksutil.c (ks_hextobyte, ks_toupper, ks_strcasecmp): New.
+ Identical to the ascii_foo versions from jnlib.
+ * gpgkeys_ldap.c: Include assert.h.
+ (main): Replace BUG by assert.
+ (build_attrs): Use ks_hextobyte and ks_strcasecmp.
+
+ * gpgkeys_finger.c (get_key): Resolved signed/unisgned char
+ mismatch.
+
2006-09-19 Werner Koch <wk@g10code.com>
* no-libgcrypt.c: New. Taken from ../tools.
diff --git a/keyserver/Makefile.am b/keyserver/Makefile.am
index cb7ff8d50..1d2e40910 100644
--- a/keyserver/Makefile.am
+++ b/keyserver/Makefile.am
@@ -18,6 +18,10 @@
## Process this file with automake to produce Makefile.in
+# Note that we have renamed the resulting binaries to from gpgkeys_foo
+# to gpg2keys_foo to allow for a non-conflicting installation of
+# gnupg1 and gnupg2. Having the same names for the helpers would
+# otherwise lead to trouble when to uninstall one of them.
EXTRA_PROGRAMS = gpg2keys_ldap gpg2keys_hkp gpg2keys_finger gpg2keys_curl
EXTRA_SCRIPTS = gpg2keys_mailto
@@ -32,7 +36,7 @@ libexec_PROGRAMS = $(GPGKEYS_LDAP) $(GPGKEYS_HKP) $(GPGKEYS_FINGER) \
libexec_SCRIPTS = $(GPGKEYS_MAILTO)
noinst_SCRIPTS = gpgkeys_test
-common_libs = ../gl/libgnu.a ../common/libcommon.a ../jnlib/libjnlib.a
+common_libs = ../gl/libgnu.a ../common/libcommon.a ../jnlib/libjnlib.a
other_libs = $(LIBICONV) $(LIBINTL) $(CAPLIBS)
gpg2keys_ldap_SOURCES = gpgkeys_ldap.c ksutil.c ksutil.h no-libgcrypt.c
@@ -42,7 +46,7 @@ gpg2keys_curl_SOURCES = gpgkeys_curl.c ksutil.c ksutil.h no-libgcrypt.c
gpg2keys_ldap_CPPFLAGS = $(LDAP_CPPFLAGS) $(AM_CPPFLAGS)
-gpg2keys_ldap_LDADD = $(common_libs) $(LDAPLIBS) $(NETLIBS) \
+gpg2keys_ldap_LDADD = $(LDAPLIBS) $(NETLIBS) \
$(other_libs) $(W32LIBS)
gpg2keys_finger_LDADD = $(common_libs) $(LIBGCRYPT_LIBS) \
@@ -50,10 +54,10 @@ gpg2keys_finger_LDADD = $(common_libs) $(LIBGCRYPT_LIBS) \
if FAKE_CURL
gpg2keys_curl_SOURCES += curl-shim.c curl-shim.h
-gpg2keys_curl_LDADD = $(common_libs) $(NETLIBS) $(DNSLIBS) \
+gpg2keys_curl_LDADD = $(NETLIBS) $(DNSLIBS) \
$(other_libs) $(W32LIBS)
gpg2keys_hkp_SOURCES += curl-shim.c curl-shim.h
-gpg2keys_hkp_LDADD = $(common_libs) $(NETLIBS) $(DNSLIBS) \
+gpg2keys_hkp_LDADD = $(NETLIBS) $(DNSLIBS) \
$(other_libs) $(W32LIBS)
else
gpg2keys_curl_CPPFLAGS = $(LIBCURL_CPPFLAGS) $(AM_CPPFLAGS)
diff --git a/keyserver/curl-shim.c b/keyserver/curl-shim.c
index 12c7afa94..f9ab3be6c 100644
--- a/keyserver/curl-shim.c
+++ b/keyserver/curl-shim.c
@@ -19,6 +19,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/curl-shim.h b/keyserver/curl-shim.h
index e942ec710..ad8e8e1d9 100644
--- a/keyserver/curl-shim.h
+++ b/keyserver/curl-shim.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 _CURL_SHIM_H_
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 b4f7b6a78..58082790f 100644
--- a/keyserver/gpgkeys_finger.c
+++ b/keyserver/gpgkeys_finger.c
@@ -325,13 +325,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 b56cca1cf..df4279ff7 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 (!"bad action");
if(!failed)
ret=KEYSERVER_OK;
diff --git a/keyserver/ksutil.c b/keyserver/ksutil.c
index 64912bb2d..18158fc81 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,55 @@ 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..154054407 100644
--- a/keyserver/ksutil.h
+++ b/keyserver/ksutil.h
@@ -1,14 +1,14 @@
/* ksutil.h
* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
*
- * This file is part of GNUPG.
+ * This file is part of GnuPG.
*
- * GNUPG is free software; you can redistribute it and/or modify
+ * GnuPG is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
- * GNUPG is distributed in the hope that it will be useful,
+ * GnuPG is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
@@ -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_ */