/*
- * Copyright (C) 2019 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2019 Jérémie Galarneau <jeremie.galarneau@efficios.com>
*
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License, version 2.1 only,
- * as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * SPDX-License-Identifier: GPL-2.0-only
*/
#include <lttng/session-descriptor-internal.h>
descriptor = _lttng_session_descriptor_live_create(name,
live_timer_interval_us);
+ if (!descriptor) {
+ goto error;
+ }
+
descriptor->base.output_type =
LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NETWORK;
struct lttng_session_descriptor_live *descriptor;
descriptor = _lttng_session_descriptor_live_create(name, live_timer_us);
- if (!descriptor) {
- goto error;
- }
return descriptor ? &descriptor->base : NULL;
-error:
- lttng_session_descriptor_destroy(descriptor ? &descriptor->base : NULL);
- return NULL;
}
struct lttng_session_descriptor *
current_view = lttng_buffer_view_from_view(payload, offset,
sizeof(*base_header));
- base_header = (typeof(base_header)) current_view.data;
- if (!base_header) {
+ if (!lttng_buffer_view_is_valid(¤t_view)) {
ret = -1;
goto end;
}
+ base_header = (typeof(base_header)) current_view.data;
switch (base_header->type) {
case LTTNG_SESSION_DESCRIPTOR_TYPE_REGULAR:
case LTTNG_SESSION_DESCRIPTOR_TYPE_SNAPSHOT:
current_view = lttng_buffer_view_from_view(payload, offset,
sizeof(*live_header));
- live_header = (typeof(live_header)) current_view.data;
- if (!live_header) {
+ if (!lttng_buffer_view_is_valid(¤t_view)) {
ret = -1;
goto end;
}
+ live_header = (typeof(live_header)) current_view.data;
live_timer_us = live_header->live_timer_us;
break;
}
/* Map the name. */
current_view = lttng_buffer_view_from_view(payload, offset,
base_header->name_len);
- name = current_view.data;
- if (!name) {
+ if (!lttng_buffer_view_is_valid(¤t_view)) {
ret = -1;
goto end;
}
+ name = current_view.data;
if (base_header->name_len == 1 ||
name[base_header->name_len - 1] ||
strlen(name) != base_header->name_len - 1) {
/* Map a URI. */
current_view = lttng_buffer_view_from_view(payload,
offset, sizeof(*uri));
- uri = (typeof(uri)) current_view.data;
- if (!uri) {
+ if (!lttng_buffer_view_is_valid(¤t_view)) {
ret = -1;
goto end;
}
+
+ uri = (typeof(uri)) current_view.data;
uris[i] = zmalloc(sizeof(*uri));
if (!uris[i]) {
ret = -1;
end:
return ret;
}
-
-LTTNG_HIDDEN
-int lttng_session_descriptor_get_base_path(struct lttng_session_descriptor *dst,
- const char **_base_path)
-{
- switch (dst->output_type) {
- case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NETWORK:
- {
- *_base_path = dst->output.network.control->subdir[0] ?
- dst->output.network.control->subdir : NULL;
- break;
- }
- case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_LOCAL:
- case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NONE:
- *_base_path = NULL;
- break;
- }
- return 0;
-}