Arrays that are not char arrays will cause a segfault if we don't check
the return value of get_char_array before accessing the str pointer.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
char *bt_ctf_get_char_array(const struct definition *field)
{
char *ret = NULL;
+ GString *char_array;
- if (field && bt_ctf_field_type(field) == CTF_TYPE_ARRAY)
- ret = get_char_array(field)->str;
- else
- bt_ctf_field_set_error(-EINVAL);
+ if (field && bt_ctf_field_type(field) == CTF_TYPE_ARRAY) {
+ char_array = get_char_array(field);
+ if (char_array) {
+ ret = char_array->str;
+ goto end;
+ }
+ }
+ bt_ctf_field_set_error(-EINVAL);
+end:
return ret;
}