Do not fail a call to paypal or stripe with no return data.
authorWerner Koch <wk@gnupg.org>
Fri, 19 May 2017 08:22:10 +0000 (10:22 +0200)
committerWerner Koch <wk@gnupg.org>
Fri, 19 May 2017 08:22:10 +0000 (10:22 +0200)
* src/paypal.c (call_paypal): Replace an empty string by a JSON
object.
* src/stripe.c (call_stripe): Ditto.
--

Some Paypal call s do not return data.  This results in an empty
string in our functions which is a non-valid JSON object.  The effect
is that an error is returned and not an "empty" JSON object.  To
mitigate this we return the "null" JSON object in such a case.

Signed-off-by: Werner Koch <wk@gnupg.org>
src/paypal.c
src/stripe.c

index 86bf35a..c7f7527 100644 (file)
@@ -157,7 +157,12 @@ call_paypal (int bearer, const char *authstring,
         err = gpg_error_from_syserror ();
       else
         {
-          cjson_t root = cJSON_Parse (jsonstr, NULL);
+          cjson_t root;
+
+          if (!*jsonstr)
+            root = cJSON_Parse ("null", NULL);
+          else
+            root = cJSON_Parse (jsonstr, NULL);
           if (!root)
             err = gpg_error_from_syserror ();
           else
index 6eb3b82..ec84bd6 100644 (file)
@@ -127,7 +127,12 @@ call_stripe (const char *keystring, const char *method, const char *data,
         err = gpg_error_from_syserror ();
       else
         {
-          cjson_t root = cJSON_Parse (jsonstr, NULL);
+          cjson_t root;
+
+          if (!*jsonstr)
+            root = cJSON_Parse ("null", NULL);
+          else
+            root = cJSON_Parse (jsonstr, NULL);
           if (!root)
             err = gpg_error_from_syserror ();
           else