cURL / Mailing Lists / curl-library / Single Mail

curl-library

[PATCH 3/8] tool_getparam.c: describe what parse_cert_parameter() does

From: Kamil Dudka <kdudka_at_redhat.com>
Date: Fri, 3 May 2013 23:32:49 +0200

... and de-duplicate the code initializing *passphrase

---
 src/tool_getparam.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 55750c9..2b7fa4e 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -286,7 +286,10 @@ static const struct feat feats[] = {
   {"TLS-SRP",        CURL_VERSION_TLSAUTH_SRP}
 };
 
-/* https://sourceforge.net/p/curl/bugs/1196/ */
+/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
+ * We allow ':' and '\' to be escaped by '\' so that we can use certificate
+ * nicknames containing ':'.  See <https://sourceforge.net/p/curl/bugs/1196/>
+ * for details. */
 static void parse_cert_parameter(const char *cert_parameter,
                                  char **certname,
                                  char **passphrase)
@@ -296,22 +299,21 @@ static void parse_cert_parameter(const char *cert_parameter,
   size_t span;
   const char *param_place = NULL;
   char *certname_place = NULL;
+  *passphrase = NULL;
+
   /* most trivial assumption: cert_parameter is empty */
   if(param_length == 0) {
     *certname = NULL;
-    *passphrase = NULL;
     return;
   }
   /* next less trivial: cert_parameter contains no colon nor backslash; this
    * means no passphrase was given and no characters escaped */
   if(!strpbrk(cert_parameter, ":\\")) {
     *certname = strdup(cert_parameter);
-    *passphrase = NULL;
     return;
   }
   /* deal with escaped chars; find unescaped colon if it exists */
   *certname = (char *) malloc(param_length + 1);
-  *passphrase = NULL;
   param_place = cert_parameter;
   certname_place = *certname;
   param_place = cert_parameter;
@@ -374,7 +376,6 @@ static void parse_cert_parameter(const char *cert_parameter,
         *passphrase = strdup(param_place);
       }
       return;
-      break;
     }
   }
 }
-- 
1.7.1
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
Received on 2013-05-03