X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Ftracker.c;h=734fbd3093e273702860fd488e9a548d8c8b9dfe;hb=b7238f7cfdcc67f4c254c03004989156c13c4c15;hp=c27d9765562e590241e2ae9ba5ece15e8bbdc1a0;hpb=d74a5c35a5e21ad8ca220e8ab47c4ffe7b5b7916;p=lttng-tools.git diff --git a/src/common/tracker.c b/src/common/tracker.c index c27d97655..734fbd309 100644 --- a/src/common/tracker.c +++ b/src/common/tracker.c @@ -20,7 +20,7 @@ struct process_attr_tracker_values_comm_header { uint32_t count; -}; +} LTTNG_PACKED; struct process_attr_tracker_value_comm { /* enum lttng_process_attr_value_type */ @@ -30,7 +30,7 @@ struct process_attr_tracker_value_comm { /* Includes the '\0' terminator. */ uint32_t name_len; } value; -}; +} LTTNG_PACKED; #define GET_INTEGRAL_COMM_VALUE(value_ptr, as_type) \ ((as_type)(is_signed(as_type) ? (value_ptr)->u._signed : \ @@ -85,6 +85,7 @@ enum lttng_error_code process_attr_value_from_comm( name = strdup(value_view->data); if (!name) { ret = LTTNG_ERR_NOMEM; + goto error; } } @@ -102,10 +103,12 @@ enum lttng_error_code process_attr_value_from_comm( } /* Only expect a payload for name value types. */ - if (is_value_type_name(value_type) && value_view->size == 0) { + if (is_value_type_name(value_type) && + (!value_view || value_view->size == 0)) { ret = LTTNG_ERR_INVALID_PROTOCOL; goto error; - } else if (!is_value_type_name(value_type) && value_view->size != 0) { + } else if (!is_value_type_name(value_type) && value_view && + value_view->size != 0) { ret = LTTNG_ERR_INVALID_PROTOCOL; goto error; }