/*
- * 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>
#include <common/defaults.h>
#include <common/error.h>
#include <time.h>
-#include <assert.h>
#include <stdio.h>
struct lttng_session_descriptor_network_location {
free(descriptor);
}
-LTTNG_HIDDEN
ssize_t lttng_session_descriptor_create_from_buffer(
const struct lttng_buffer_view *payload,
struct lttng_session_descriptor **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;
return ret;
}
-LTTNG_HIDDEN
int lttng_session_descriptor_serialize(
const struct lttng_session_descriptor *descriptor,
struct lttng_dynamic_buffer *buffer)
return ret;
}
-LTTNG_HIDDEN
enum lttng_session_descriptor_type
lttng_session_descriptor_get_type(
const struct lttng_session_descriptor *descriptor)
return descriptor->type;
}
-LTTNG_HIDDEN
enum lttng_session_descriptor_output_type
lttng_session_descriptor_get_output_type(
const struct lttng_session_descriptor *descriptor)
return descriptor->output_type;
}
-LTTNG_HIDDEN
void lttng_session_descriptor_get_local_output_uri(
const struct lttng_session_descriptor *descriptor,
struct lttng_uri *local_uri)
memcpy(local_uri, descriptor->output.local, sizeof(*local_uri));
}
-LTTNG_HIDDEN
void lttng_session_descriptor_get_network_output_uris(
const struct lttng_session_descriptor *descriptor,
struct lttng_uri *control,
memcpy(data, descriptor->output.network.data, sizeof(*data));
}
-LTTNG_HIDDEN
unsigned long long
lttng_session_descriptor_live_get_timer_interval(
const struct lttng_session_descriptor *descriptor)
return status;
}
-LTTNG_HIDDEN
int lttng_session_descriptor_set_session_name(
struct lttng_session_descriptor *descriptor,
const char *name)
return ret;
}
-LTTNG_HIDDEN
bool lttng_session_descriptor_is_output_destination_initialized(
const struct lttng_session_descriptor *descriptor)
{
}
}
-LTTNG_HIDDEN
bool lttng_session_descriptor_has_output_directory(
const struct lttng_session_descriptor *descriptor)
{
return false;
}
-LTTNG_HIDDEN
enum lttng_error_code lttng_session_descriptor_set_default_output(
struct lttng_session_descriptor *descriptor,
time_t *session_creation_time,
goto end;
}
}
- assert(descriptor->name);
+ LTTNG_ASSERT(descriptor->name);
ret = snprintf(local_uri, sizeof(local_uri),
"file://%s/%s/%s%s",
absolute_home_path,
* Note that only properties that can be populated by the session daemon
* (output destination and name) are assigned.
*/
-LTTNG_HIDDEN
int lttng_session_descriptor_assign(
struct lttng_session_descriptor *dst,
const struct lttng_session_descriptor *src)