[svn] GnuPG - r4551 - branches/STABLE-BRANCH-1-4/keyserver

svn author dshaw cvs at cvs.gnupg.org
Fri Jul 27 18:21:51 CEST 2007


Author: dshaw
Date: 2007-07-27 18:21:18 +0200 (Fri, 27 Jul 2007)
New Revision: 4551

Modified:
   branches/STABLE-BRANCH-1-4/keyserver/ChangeLog
   branches/STABLE-BRANCH-1-4/keyserver/gpgkeys_ldap.c
Log:
* gpgkeys_ldap.c (search_key, main): Fix bug where searching for foo
bar (no quotes) on the command line resulted in searching for
"foo\2Abar" due to LDAP quoting.  The proper search is "foo*bar".


Modified: branches/STABLE-BRANCH-1-4/keyserver/ChangeLog
===================================================================
--- branches/STABLE-BRANCH-1-4/keyserver/ChangeLog	2007-07-27 15:48:35 UTC (rev 4550)
+++ branches/STABLE-BRANCH-1-4/keyserver/ChangeLog	2007-07-27 16:21:18 UTC (rev 4551)
@@ -1,3 +1,9 @@
+2007-07-27  David Shaw  <dshaw at jabberwocky.com>
+
+	* gpgkeys_ldap.c (search_key, main): Fix bug where searching for
+	foo bar (no quotes) on the command line resulted in searching for
+	"foo\2Abar" due to LDAP quoting.  The proper search is "foo*bar".
+
 2007-04-16  David Shaw  <dshaw at jabberwocky.com>
 
 	* gpgkeys_hkp.c (main): Show curl or fake-curl version string.

Modified: branches/STABLE-BRANCH-1-4/keyserver/gpgkeys_ldap.c
===================================================================
--- branches/STABLE-BRANCH-1-4/keyserver/gpgkeys_ldap.c	2007-07-27 15:48:35 UTC (rev 4550)
+++ branches/STABLE-BRANCH-1-4/keyserver/gpgkeys_ldap.c	2007-07-27 16:21:18 UTC (rev 4551)
@@ -1291,18 +1291,25 @@
 static int
 search_key(const char *searchkey)
 {
-  char **vals;
+  char **vals,*search;
   LDAPMessage *res,*each;
   int err,count=0;
   struct keylist *dupelist=NULL;
   /* The maximum size of the search, including the optional stuff and
      the trailing \0 */
-  char search[2+1+9+1+3+(MAX_LINE*3)+3+1+15+14+1+1+20];
   char *attrs[]={"pgpcertid","pgpuserid","pgprevoked","pgpdisabled",
 		 "pgpkeycreatetime","pgpkeyexpiretime","modifytimestamp",
 		 "pgpkeysize","pgpkeytype",NULL};
   enum ks_search_type search_type;
 
+  search=malloc(2+1+9+1+3+strlen(searchkey)+3+1+15+14+1+1+20);
+  if(!search)
+    {
+      fprintf(console,"gpgkeys: out of memory when building search list\n");
+      fprintf(output,"SEARCH %s FAILED %d\n",searchkey,KEYSERVER_NO_MEMORY);
+      return KEYSERVER_NO_MEMORY;
+    }
+
   fprintf(output,"SEARCH %s BEGIN\n",searchkey);
 
   search_type=classify_ks_search(&searchkey);
@@ -1357,7 +1364,7 @@
       break;
     }
 
-  ldap_quote(search,searchkey);
+  strcat(search,searchkey);
 
   switch(search_type)
     {
@@ -1395,6 +1402,7 @@
 
   err=ldap_search_s(ldap,basekeyspacedn,
 		    LDAP_SCOPE_SUBTREE,search,attrs,0,&res);
+  free(search);
   if(err!=LDAP_SUCCESS && err!=LDAP_SIZELIMIT_EXCEEDED)
     {
       int errtag=ldap_err_to_gpg_err(err);
@@ -2311,7 +2319,7 @@
 	  keyptr=keyptr->next;
 	}
 
-      searchkey=malloc(len+1);
+      searchkey=malloc((len*3)+1);
       if(searchkey==NULL)
 	{
 	  ret=KEYSERVER_NO_MEMORY;
@@ -2324,7 +2332,7 @@
       keyptr=keylist;
       while(keyptr!=NULL)
 	{
-	  strcat(searchkey,keyptr->str);
+	  ldap_quote(searchkey,keyptr->str);
 	  strcat(searchkey,"*");
 	  keyptr=keyptr->next;
 	}




More information about the Gnupg-commits mailing list