X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Frotate.c;h=f32c69be18d10bc07c0c8294ff808aee23f50333;hp=26cc5f94f8fb10361d43a20c968da7a9a6db9500;hb=dbd512ea8aa5349849aeeccda6130aa9e28cf23c;hpb=0ca413e056cf24ec5424cde5c78227138b0782c7 diff --git a/src/lib/lttng-ctl/rotate.c b/src/lib/lttng-ctl/rotate.c index 26cc5f94f..f32c69be1 100644 --- a/src/lib/lttng-ctl/rotate.c +++ b/src/lib/lttng-ctl/rotate.c @@ -28,22 +28,11 @@ #include "lttng-ctl-helper.h" -struct lttng_rotation_immediate_attr *lttng_rotation_immediate_attr_create(void) -{ - return zmalloc(sizeof(struct lttng_rotation_immediate_attr)); -} - struct lttng_rotation_schedule_attr *lttng_rotation_schedule_attr_create(void) { return zmalloc(sizeof(struct lttng_rotation_schedule_attr)); } -void lttng_rotation_immediate_attr_destroy( - struct lttng_rotation_immediate_attr *attr) -{ - free(attr); -} - void lttng_rotation_schedule_attr_destroy(struct lttng_rotation_schedule_attr *attr) { if (attr) { @@ -52,29 +41,6 @@ void lttng_rotation_schedule_attr_destroy(struct lttng_rotation_schedule_attr *a } } -enum lttng_rotation_status lttng_rotation_immediate_attr_set_session_name( - struct lttng_rotation_immediate_attr *attr, - const char *session_name) -{ - enum lttng_rotation_status status = LTTNG_ROTATION_STATUS_OK; - int ret; - - if (!attr || !session_name) { - status = LTTNG_ROTATION_STATUS_INVALID; - goto error; - } - - ret = lttng_strncpy(attr->session_name, session_name, - sizeof(attr->session_name)); - if (ret) { - status = LTTNG_ROTATION_STATUS_INVALID; - goto error; - } - -error: - return status; -} - static enum lttng_rotation_status ask_rotation_info( struct lttng_rotation_handle *rotation_handle, @@ -111,29 +77,6 @@ end: } -enum lttng_rotation_status lttng_rotation_schedule_attr_set_session_name( - struct lttng_rotation_schedule_attr *attr, - const char *session_name) -{ - enum lttng_rotation_status status = LTTNG_ROTATION_STATUS_OK; - int ret; - - if (!attr || !session_name) { - status = LTTNG_ROTATION_STATUS_INVALID; - goto error; - } - - ret = lttng_strncpy(attr->session_name, session_name, - sizeof(attr->session_name)); - if (ret) { - status = LTTNG_ROTATION_STATUS_INVALID; - goto error; - } - -error: - return status; -} - enum lttng_rotation_status lttng_rotation_schedule_attr_set_timer_period( struct lttng_rotation_schedule_attr *attr, uint64_t timer) @@ -277,12 +220,13 @@ void lttng_rotation_handle_destroy( static int init_rotation_handle(struct lttng_rotation_handle *rotation_handle, + const char *session_name, struct lttng_rotate_session_return *rotate_return, struct lttng_rotation_immediate_attr *attr) { int ret; - ret = lttng_strncpy(rotation_handle->session_name, attr->session_name, + ret = lttng_strncpy(rotation_handle->session_name, session_name, sizeof(rotation_handle->session_name)); if (ret) { goto end; @@ -298,21 +242,30 @@ end: * * Return 0 on success else a negative LTTng error code. */ -int lttng_rotate_session(struct lttng_rotation_immediate_attr *attr, +int lttng_rotate_session(const char *session_name, + struct lttng_rotation_immediate_attr *attr, struct lttng_rotation_handle **rotation_handle) { struct lttcomm_session_msg lsm; struct lttng_rotate_session_return *rotate_return = NULL; int ret; + size_t session_name_len; - if (!attr) { + if (!session_name) { + ret = -LTTNG_ERR_INVALID; + goto end; + } + + session_name_len = strlen(session_name); + if (session_name_len >= sizeof(lsm.session.name) || + session_name_len >= member_sizeof(struct lttng_rotation_handle, session_name)) { ret = -LTTNG_ERR_INVALID; goto end; } memset(&lsm, 0, sizeof(lsm)); lsm.cmd_type = LTTNG_ROTATE_SESSION; - lttng_ctl_copy_string(lsm.session.name, attr->session_name, + lttng_ctl_copy_string(lsm.session.name, session_name, sizeof(lsm.session.name)); ret = lttng_ctl_ask_sessiond(&lsm, (void **) &rotate_return); @@ -327,7 +280,8 @@ int lttng_rotate_session(struct lttng_rotation_immediate_attr *attr, goto end; } - init_rotation_handle(*rotation_handle, rotate_return, attr); + init_rotation_handle(*rotation_handle, session_name, rotate_return, + attr); ret = 0; @@ -339,20 +293,25 @@ end: /* * Configure the automatic rotate parameters. */ -int lttng_rotation_set_schedule( +int lttng_rotation_set_schedule(const char *session_name, struct lttng_rotation_schedule_attr *attr) { struct lttcomm_session_msg lsm; int ret; - if (!attr) { + if (!attr || !session_name) { + ret = -LTTNG_ERR_INVALID; + goto end; + } + + if (strlen(session_name) >= sizeof(lsm.session.name)) { ret = -LTTNG_ERR_INVALID; goto end; } memset(&lsm, 0, sizeof(lsm)); lsm.cmd_type = LTTNG_ROTATION_SET_SCHEDULE; - lttng_ctl_copy_string(lsm.session.name, attr->session_name, + lttng_ctl_copy_string(lsm.session.name, session_name, sizeof(lsm.session.name)); lsm.u.rotate_setup.timer_us = attr->timer_us; lsm.u.rotate_setup.size = attr->size;