summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a3ecaea)
The use of strncpy can lead to silently-truncated event names. Replace
its use by the internal lttng_strncpy which fails on truncation.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I65d6bd46208dc7b62a83e4600a52a6669fd99d55
.loglevel_type = agent_event->loglevel_type,
};
.loglevel_type = agent_event->loglevel_type,
};
- strncpy(event.name, agent_event->name, sizeof(event.name));
- event.name[sizeof(event.name) - 1] = '\0';
+ ret = lttng_strncpy(event.name, agent_event->name, sizeof(event.name));
+ if (ret) {
+ /* Internal error, invalid name. */
+ ERR("Invalid event name while listing agent events: '%s' exceeds the maximal allowed length of %zu bytes",
+ agent_event->name, sizeof(event.name));
+ ret = -LTTNG_ERR_UNK;
+ goto end;
+ }
ret = lttng_dynamic_buffer_append(
&payload->buffer, &event, sizeof(event));
ret = lttng_dynamic_buffer_append(
&payload->buffer, &event, sizeof(event));
- strncpy(event.name, uevent->attr.name, sizeof(event.name));
- event.name[sizeof(event.name) - 1] = '\0';
+ ret = lttng_strncpy(event.name, uevent->attr.name, sizeof(event.name));
+ if (ret) {
+ /* Internal error, invalid name. */
+ ERR("Invalid event name while listing user space tracer events: '%s' exceeds the maximal allowed length of %zu bytes",
+ uevent->attr.name, sizeof(event.name));
+ ret = -LTTNG_ERR_UNK;
+ goto end;
+ }
event.enabled = uevent->enabled;
event.enabled = uevent->enabled;
cds_list_for_each_entry(kevent, &kchan->events_list.head , list) {
struct lttng_event event = {};
cds_list_for_each_entry(kevent, &kchan->events_list.head , list) {
struct lttng_event event = {};
- strncpy(event.name, kevent->event->name, sizeof(event.name));
- event.name[sizeof(event.name) - 1] = '\0';
+ ret = lttng_strncpy(event.name, kevent->event->name, sizeof(event.name));
+ if (ret) {
+ /* Internal error, invalid name. */
+ ERR("Invalid event name while listing kernel events: '%s' exceeds the maximal allowed length of %zu bytes",
+ kevent->event->name,
+ sizeof(event.name));
+ ret = -LTTNG_ERR_UNK;
+ goto end;
+ }
+
event.enabled = kevent->enabled;
event.filter = (unsigned char) !!kevent->filter_expression;
event.enabled = kevent->enabled;
event.filter = (unsigned char) !!kevent->filter_expression;