X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_channels.c;h=3a7f9fd06b937141f7493c595ddc16f399233cec;hp=214c8a3621660c8cf83cbd31edf26e7b7c06aebc;hb=54185c70692f8a6d9c667214743e0ffd07a0afa3;hpb=7010c0332387eea98b52f301458d481f151840a6 diff --git a/src/bin/lttng/commands/enable_channels.c b/src/bin/lttng/commands/enable_channels.c index 214c8a362..3a7f9fd06 100644 --- a/src/bin/lttng/commands/enable_channels.c +++ b/src/bin/lttng/commands/enable_channels.c @@ -244,7 +244,7 @@ static int enable_channel(char *session_name) void *extended_ptr; /* Validate channel name's length */ - if (strlen(channel_name) >= NAME_MAX) { + if (strlen(channel_name) >= sizeof(chan_opts.name)) { ERR("Channel name is too long (max. %zu characters)", sizeof(chan_opts.name) - 1); error = 1; @@ -493,44 +493,50 @@ int cmd_enable_channels(int argc, const char **argv) } case OPT_SWITCH_TIMER: { - unsigned long v; + uint64_t v; errno = 0; opt_arg = poptGetOptArg(pc); - v = strtoul(opt_arg, NULL, 0); - if (errno != 0 || !isdigit(opt_arg[0])) { - ERR("Wrong value in --switch-timer parameter: %s", opt_arg); + + if (utils_parse_time_suffix(opt_arg, &v) < 0) { + ERR("Wrong value for --switch-timer parameter: %s", opt_arg); ret = CMD_ERROR; goto end; } + if (v != (uint32_t) v) { ERR("32-bit overflow in --switch-timer parameter: %s", opt_arg); ret = CMD_ERROR; goto end; } chan_opts.attr.switch_timer_interval = (uint32_t) v; - DBG("Channel switch timer interval set to %d", chan_opts.attr.switch_timer_interval); + DBG("Channel switch timer interval set to %d %s", + chan_opts.attr.switch_timer_interval, + USEC_UNIT); break; } case OPT_READ_TIMER: { - unsigned long v; + uint64_t v; errno = 0; opt_arg = poptGetOptArg(pc); - v = strtoul(opt_arg, NULL, 0); - if (errno != 0 || !isdigit(opt_arg[0])) { - ERR("Wrong value in --read-timer parameter: %s", opt_arg); + + if (utils_parse_time_suffix(opt_arg, &v) < 0) { + ERR("Wrong value for --read-timer parameter: %s", opt_arg); ret = CMD_ERROR; goto end; } + if (v != (uint32_t) v) { ERR("32-bit overflow in --read-timer parameter: %s", opt_arg); ret = CMD_ERROR; goto end; } chan_opts.attr.read_timer_interval = (uint32_t) v; - DBG("Channel read timer interval set to %d", chan_opts.attr.read_timer_interval); + DBG("Channel read timer interval set to %d %s", + chan_opts.attr.read_timer_interval, + USEC_UNIT); break; } case OPT_MONITOR_TIMER: @@ -547,7 +553,9 @@ int cmd_enable_channels(int argc, const char **argv) } opt_monitor_timer.interval = (uint64_t) v; opt_monitor_timer.set = true; - DBG("Channel monitor timer interval set to %" PRIu64" (µs)", opt_monitor_timer.interval); + DBG("Channel monitor timer interval set to %" PRIu64 " %s", + opt_monitor_timer.interval, + USEC_UNIT); break; } case OPT_BLOCKING_TIMEOUT: @@ -595,8 +603,9 @@ int cmd_enable_channels(int argc, const char **argv) opt_blocking_timeout.value = (int64_t) v; opt_blocking_timeout.set = true; - DBG("Channel blocking timeout set to %" PRId64 " µs%s", + DBG("Channel blocking timeout set to %" PRId64 " %s%s", opt_blocking_timeout.value, + USEC_UNIT, opt_blocking_timeout.value == 0 ? " (non-blocking)" : ""); break;