* gpgkeys_hkp.c, gpgkeys_oldhkp.c, ksutil.h: Some minor cleanup and
authorDavid Shaw <dshaw@jabberwocky.com>
Mon, 2 May 2005 00:46:39 +0000 (00:46 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Mon, 2 May 2005 00:46:39 +0000 (00:46 +0000)
comments as to the size of MAX_LINE and MAX_URL.

keyserver/ChangeLog
keyserver/gpgkeys_hkp.c
keyserver/gpgkeys_oldhkp.c
keyserver/ksutil.h

index 3e0e0c7..3264b62 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * gpgkeys_hkp.c, gpgkeys_oldhkp.c, ksutil.h: Some minor cleanup
+       and comments as to the size of MAX_LINE and MAX_URL.
+
 2005-04-16  David Shaw  <dshaw@jabberwocky.com>
 
        * gpgkeys_hkp.c: New hkp handler that uses curl or curl-shim.
index 27e3449..a7d7b92 100644 (file)
@@ -72,7 +72,7 @@ int
 send_key(int *eof)
 {
   CURLcode res;
-  char request[MAX_URL+100];
+  char request[MAX_URL];
   int begin=0,end=0,ret=KEYSERVER_INTERNAL_ERROR;
   char keyid[17];
   char line[MAX_LINE];
@@ -80,7 +80,6 @@ send_key(int *eof)
   size_t keylen=8,keymax=8;
 
   key=malloc(9);
-  strcpy(key,"keytext=");
   if(!key)
     {
       fprintf(console,"gpgkeys: out of memory\n");
@@ -88,6 +87,8 @@ send_key(int *eof)
       goto fail;
     }
 
+  strcpy(key,"keytext=");
+
   /* Read and throw away input until we see the BEGIN */
 
   while(fgets(line,MAX_LINE,input)!=NULL)
@@ -216,6 +217,9 @@ get_key(char *getkey)
       return KEYSERVER_NOT_SUPPORTED;
     }
 
+  /* Note that the size of request is MAX_URL which already implies a
+     1024 byte PATH.  MAX_URL+100 is absurdly safe. */
+
   strcpy(request,"http://");
   strcat(request,opt->host);
   strcat(request,":");
@@ -273,7 +277,9 @@ search_key(char *searchkey)
 
   searchkey_encoded=curl_escape(searchkey,0);
 
-  request=malloc(MAX_URL+100+strlen(searchkey_encoded));
+  /* Note that MAX_URL already implies a 1024 byte PATH, so this is
+     safe. */
+  request=malloc(MAX_URL+strlen(searchkey_encoded));
   if(!request)
     {
       fprintf(console,"gpgkeys: out of memory\n");
index fe74f4d..b29ff25 100644 (file)
 #include "keyserver.h"
 #include "ksutil.h"
 
+#define GET    0
+#define SEND   1
+#define SEARCH 2
+
 extern char *optarg;
 extern int optind;
 
index 1b12392..0001cf3 100644 (file)
 #include <curl/curl.h>
 #endif
 
-#define GET    0
-#define SEND   1
-#define SEARCH 2
-
-/* MAX_LINE must be 1 larger than the largest item we expect to
-   receive. */
-#define MAX_LINE    1080
+/* MAX_LINE must be at least 1 larger than the largest item we expect
+   to receive, including the name tag ("COMMAND", "PORT", etc) and
+   space between.  In practice, that means it should be
+   strlen("OPAQUE")+1+sizeof_opaque+1 */
+#define MAX_LINE       (6+1+1024+1)
 
 #define MAX_COMMAND    6
 #define MAX_OPTION   256