vppapigen: fix coverity issues in jsonconvert 01/31301/2
authorOle Troan <ot@cisco.com>
Mon, 15 Feb 2021 23:31:52 +0000 (00:31 +0100)
committerNeale Ranns <neale@graphiant.com>
Tue, 16 Feb 2021 08:13:41 +0000 (08:13 +0000)
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I92e03a5a3fcbdab6ce4d178193dceb4450ac0f62

src/vat2/jsonconvert.c
src/vat2/jsonconvert.h
src/vat2/test/vat2_test.api
src/vat2/test/vat2_test.c

index ec06628..35279ee 100644 (file)
@@ -258,78 +258,98 @@ format_ip6_address (u8 * s, va_list * args)
   return s;
 }
 
-void *vl_api_ip4_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_address_t *a)
+int
+vl_api_ip4_address_t_fromjson (void **mp, int *len, cJSON *o,
+                              vl_api_ip4_address_t *a)
 {
     unformat_input_t input;
     char *p = cJSON_GetStringValue(o);
-    if (!p) return 0;
+    if (!p)
+      return -1;
     unformat_init_string (&input, p, strlen(p));
     unformat(&input, "%U", unformat_ip4_address, a);
-    return mp;
+    return 0;
 }
 
-void *vl_api_ip4_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_prefix_t *a)
+int
+vl_api_ip4_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                             vl_api_ip4_prefix_t *a)
 {
     unformat_input_t input;
     char *p = cJSON_GetStringValue(o);
-    if (!p) return 0;
+    if (!p)
+      return -1;
     unformat_init_string (&input, p, strlen(p));
     unformat(&input, "%U/%d", unformat_ip4_address, &a->address, &a->len);
-    return mp;
+    return 0;
 }
 
-void *vl_api_ip4_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_prefix_t *a)
+int
+vl_api_ip4_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                          vl_api_ip4_prefix_t *a)
 {
   return vl_api_ip4_prefix_t_fromjson(mp, len, o, a);
 }
-void *vl_api_ip6_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_address_t *a)
+int
+vl_api_ip6_address_t_fromjson (void **mp, int *len, cJSON *o,
+                              vl_api_ip6_address_t *a)
 {
     unformat_input_t input;
     char *p = cJSON_GetStringValue(o);
-    if (!p) return 0;
+    if (!p)
+      return -1;
     unformat_init_string (&input, p, strlen(p));
     unformat(&input, "%U", unformat_ip6_address, a);
-    return mp;
+    return 0;
 }
 
-void *vl_api_ip6_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_prefix_t *a)
+int
+vl_api_ip6_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                             vl_api_ip6_prefix_t *a)
 {
   unformat_input_t input;
   char *p = cJSON_GetStringValue(o);
-  if (!p) return 0;
+  if (!p)
+    return -1;
   unformat_init_string (&input, p, strlen(p));
   unformat(&input, "%U/%d", unformat_ip6_address, &a->address, &a->len);
-  return mp;
+  return 0;
 }
 
-void *vl_api_ip6_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_prefix_t *a)
+int
+vl_api_ip6_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                          vl_api_ip6_prefix_t *a)
 {
   return vl_api_ip6_prefix_t_fromjson(mp, len, o, a);
 }
 
-void *vl_api_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_address_t *a)
+int
+vl_api_address_t_fromjson (void **mp, int *len, cJSON *o, vl_api_address_t *a)
 {
   unformat_input_t input;
 
   char *p = cJSON_GetStringValue(o);
-  if (!p) return 0;
+  if (!p)
+    return -1;
   unformat_init_string (&input, p, strlen(p));
   if (unformat (&input, "%U", unformat_ip4_address, &a->un.ip4))
     a->af = ADDRESS_IP4;
   else if (unformat (&input, "%U", unformat_ip6_address, &a->un.ip6))
     a->af = ADDRESS_IP6;
   else
-    return (0);
-  return mp;
+    return -1;
+  return 0;
 }
 
-void *vl_api_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_prefix_t *a)
+int
+vl_api_prefix_t_fromjson (void **mp, int *len, cJSON *o, vl_api_prefix_t *a)
 {
   unformat_input_t input;
 
   char *p = cJSON_GetStringValue(o);
 
-  if (!p) return 0;
+  if (!p)
+    return -1;
   unformat_init_string (&input, p, strlen(p));
   int plen;
   if (unformat (&input, "%U/%d", unformat_ip4_address, &a->address.un.ip4, &plen))
@@ -337,12 +357,14 @@ void *vl_api_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_prefix_t *a)
   else if (unformat (&input, "%U/%d", unformat_ip6_address, &a->address.un.ip6, &plen))
     a->address.af = ADDRESS_IP6;
   else
-    return (0);
+    return -1;
   a->len = plen;
-  return mp;
+  return 0;
 }
 
-void *vl_api_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_prefix_t *a)
+int
+vl_api_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                      vl_api_prefix_t *a)
 {
   return vl_api_prefix_t_fromjson(mp, len, o, a);
 }
@@ -375,14 +397,16 @@ unformat_mac_address (unformat_input_t * input, va_list * args)
   return (0);
 }
 
-void *vl_api_mac_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_mac_address_t *a)
+int
+vl_api_mac_address_t_fromjson (void **mp, int *len, cJSON *o,
+                              vl_api_mac_address_t *a)
 {
   unformat_input_t input;
 
   char *p = cJSON_GetStringValue(o);
   unformat_init_string (&input, p, strlen(p));
   unformat(&input, "%U", unformat_mac_address, a);
-  return mp;
+  return 0;
 }
 
 /* Format an IP4 address. */
index 2e723fa..ee1355f 100644 (file)
 #undef _
 
 int vl_api_bool_fromjson(cJSON *o, bool *d);
-void *vl_api_ip4_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_address_t *a);
-void *vl_api_ip4_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_prefix_t *a);
-void *vl_api_ip4_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip4_prefix_t *a);
-void *vl_api_ip6_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_address_t *a);
-void *vl_api_ip6_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_prefix_t *a);
-void *vl_api_ip6_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_ip6_prefix_t *a);
-void *vl_api_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_address_t *a);
-void *vl_api_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_prefix_t *a);
-void *vl_api_address_with_prefix_t_fromjson(void *mp, int *len, cJSON *o, vl_api_prefix_t *a);
-void *vl_api_mac_address_t_fromjson(void *mp, int *len, cJSON *o, vl_api_mac_address_t *a);
+  int vl_api_ip4_address_t_fromjson (void **mp, int *len, cJSON *o,
+                                    vl_api_ip4_address_t *a);
+  int vl_api_ip4_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                   vl_api_ip4_prefix_t *a);
+  int vl_api_ip4_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                                vl_api_ip4_prefix_t *a);
+  int vl_api_ip6_address_t_fromjson (void **mp, int *len, cJSON *o,
+                                    vl_api_ip6_address_t *a);
+  int vl_api_ip6_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                   vl_api_ip6_prefix_t *a);
+  int vl_api_ip6_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                                vl_api_ip6_prefix_t *a);
+  int vl_api_address_t_fromjson (void **mp, int *len, cJSON *o,
+                                vl_api_address_t *a);
+  int vl_api_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                               vl_api_prefix_t *a);
+  int vl_api_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+                                            vl_api_prefix_t *a);
+  int vl_api_mac_address_t_fromjson (void **mp, int *len, cJSON *o,
+                                    vl_api_mac_address_t *a);
 
-uword unformat_ip4_address(unformat_input_t * input, va_list * args);
-uword unformat_ip6_address(unformat_input_t * input, va_list * args);
-u8 *format_ip6_address(u8 * s, va_list * args);
-uword unformat_mac_address(unformat_input_t * input, va_list * args);
-u8 *format_ip4_address(u8 * s, va_list * args);
-u8 *format_vl_api_interface_index_t(u8 *s, va_list *args);
-uword unformat_vl_api_interface_index_t(unformat_input_t * input, va_list * args);
-u8 *format_vl_api_timestamp_t(u8 * s, va_list * args);
-u8 *format_vl_api_timedelta_t(u8 * s, va_list * args);
-uword unformat_vl_api_timedelta_t(unformat_input_t * input, va_list * args);
-uword unformat_vl_api_timestamp_t(unformat_input_t * input, va_list * args);
-u8 *format_vl_api_gbp_scope_t(u8 * s, va_list * args);
-uword unformat_vl_api_gbp_scope_t(unformat_input_t * input, va_list * args);
+  uword unformat_ip4_address (unformat_input_t *input, va_list *args);
+  uword unformat_ip6_address (unformat_input_t *input, va_list *args);
+  u8 *format_ip6_address (u8 *s, va_list *args);
+  uword unformat_mac_address (unformat_input_t *input, va_list *args);
+  u8 *format_ip4_address (u8 *s, va_list *args);
+  u8 *format_vl_api_interface_index_t (u8 *s, va_list *args);
+  uword unformat_vl_api_interface_index_t (unformat_input_t *input,
+                                          va_list *args);
+  u8 *format_vl_api_timestamp_t (u8 *s, va_list *args);
+  u8 *format_vl_api_timedelta_t (u8 *s, va_list *args);
+  uword unformat_vl_api_timedelta_t (unformat_input_t *input, va_list *args);
+  uword unformat_vl_api_timestamp_t (unformat_input_t *input, va_list *args);
+  u8 *format_vl_api_gbp_scope_t (u8 *s, va_list *args);
+  uword unformat_vl_api_gbp_scope_t (unformat_input_t *input, va_list *args);
 
-int vl_api_c_string_to_api_string(const char *buf, vl_api_string_t * str);
-void vl_api_string_cJSON_AddToObject(cJSON * const object, const char * const name, vl_api_string_t *astr);
+  int vl_api_c_string_to_api_string (const char *buf, vl_api_string_t *str);
+  void vl_api_string_cJSON_AddToObject (cJSON *const object,
+                                       const char *const name,
+                                       vl_api_string_t *astr);
 
-u8 *u8string_fromjson(cJSON *o, char *fieldname);
-int u8string_fromjson2(cJSON *o, char *fieldname, u8 *data);
-int vl_api_u8_string_fromjson(cJSON *o, u8 *s, int len);
+  u8 *u8string_fromjson (cJSON *o, char *fieldname);
+  int u8string_fromjson2 (cJSON *o, char *fieldname, u8 *data);
+  int vl_api_u8_string_fromjson (cJSON *o, u8 *s, int len);
 
 #define foreach_vat2_tojson                     \
   _(ip4_address)                                \
index ff503f0..5896147 100644 (file)
@@ -77,3 +77,7 @@ autoreply define test_vla5 {
   vl_api_test_vlatype3_t data;
 };
 
+/* Addresses */
+autoreply define test_addresses {
+  vl_api_address_t a;
+};
index 10cfee4..f28bb41 100644 (file)
@@ -142,6 +142,11 @@ struct msgs msgs[] = {
     .tojson = (tojson_fn_t) vl_api_test_vla5_t_tojson,
     .fromjson = (fromjson_fn_t) vl_api_test_vla5_t_fromjson,
   },
+  {
+    .name = "test_addresses",
+    .tojson = (tojson_fn_t) vl_api_test_addresses_t_tojson,
+    .fromjson = (fromjson_fn_t) vl_api_test_addresses_t_fromjson,
+  },
 };
 
 struct tests tests[] = {
@@ -163,6 +168,8 @@ struct tests tests[] = {
         "[1,2,3,4,5] }}" },
   { .s = "{\"_msgname\": \"test_vla5\", \"data\": { \"count\": 5, \"vla\": "
         "\"0xaabbccddee\" }}" },
+  { .s = "{\"_msgname\": \"test_addresses\", \"a\": \"1.2.3.4\" }" },
+  { .s = "{\"_msgname\": \"test_addresses\", \"a\": \"2001:db8::23\" }" },
 };
 
 int main (int argc, char **argv)