diff options
author | Ole Troan <ot@cisco.com> | 2019-06-12 14:28:14 +0200 |
---|---|---|
committer | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2019-06-18 11:47:21 +0000 |
commit | 283cd2e9afcab1407d5614d79da4354790fa059a (patch) | |
tree | 21ff50ec22a5f9989bfdee76fcbb418ada91232f /src/vat/api_format.c | |
parent | a8c0b62a88494e9a8562c57dfd3fd75818a629a7 (diff) |
api: string type to convert to vector
Previous use of strndup() required user to remember to call free().
Now return a vector pointing directly to the API message string.
Of course user must remember to copy the string out if lifetime
is longer than API message lifetime.
Change-Id: Ib5e2b3d52d258e1a42ea9ea9a9e04abbe360e2bf
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/vat/api_format.c')
-rw-r--r-- | src/vat/api_format.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 60d66be368d..5eb44c99b5d 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -58,6 +58,7 @@ #include "vat/json_format.h" #include <vnet/ip/ip_types_api.h> #include <vnet/ethernet/ethernet_types_api.h> +#include <vlibapi/api_types_inlines.h> #include <inttypes.h> #include <sys/stat.h> @@ -1299,30 +1300,31 @@ static void vl_api_show_version_reply_t_handler if (retval >= 0) { - char *s; + u8 *s = 0; char *p = (char *) &mp->program; - s = vl_api_from_api_string_c ((vl_api_string_t *) p); - errmsg (" program: %s\n", s); - free (s); + s = vl_api_from_api_to_vec ((vl_api_string_t *) p); + errmsg (" program: %v\n", s); + vec_free (s); p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t); - s = vl_api_from_api_string_c ((vl_api_string_t *) p); - errmsg (" version: %s\n", s); - free (s); + s = vl_api_from_api_to_vec ((vl_api_string_t *) p); + errmsg (" version: %v\n", s); + vec_free (s); p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t); - s = vl_api_from_api_string_c ((vl_api_string_t *) p); - errmsg (" build date: %s\n", s); - free (s); + s = vl_api_from_api_to_vec ((vl_api_string_t *) p); + errmsg (" build date: %v\n", s); + vec_free (s); p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t); - s = vl_api_from_api_string_c ((vl_api_string_t *) p); - errmsg ("build directory: %s\n", s); - free (s); + s = vl_api_from_api_to_vec ((vl_api_string_t *) p); + vec_free (s); + + errmsg ("build directory: %v\n", s); } vam->retval = retval; vam->result_ready = 1; |