Fix: lttng-snapshot: use after free of max size argument
[lttng-tools.git] / src / bin / lttng / commands / snapshot.cpp
index a5cbbfe759f5c16c25ea0a87bf8789a8e9627576..3cb66c5557406ed3585d80f1f4c4185cda51be9e 100644 (file)
 #include <sys/types.h>
 #include <unistd.h>
 
-#include <common/utils.h>
-#include <common/mi-lttng.h>
+#include <common/utils.hpp>
+#include <common/mi-lttng.hpp>
 #include <lttng/lttng.h>
 
-#include "../command.h"
+#include "../command.hpp"
 
 static const char *opt_session_name;
 static const char *opt_output_name;
@@ -623,17 +623,20 @@ int cmd_snapshot(int argc, const char **argv)
                case OPT_MAX_SIZE:
                {
                        uint64_t val;
-                       const char *max_size_arg = poptGetOptArg(pc);
+                       char *max_size_arg = poptGetOptArg(pc);
+                       const int parse_ret = utils_parse_size_suffix(
+                                       (char *) max_size_arg, &val);
 
-                       if (utils_parse_size_suffix((char *) max_size_arg, &val) < 0) {
+                       if (parse_ret < 0) {
                                ERR("Unable to handle max-size value %s",
                                                max_size_arg);
                                cmd_ret = CMD_ERROR;
+                               free(max_size_arg);
                                goto end;
                        }
 
                        opt_max_size = val;
-
+                       free(max_size_arg);
                        break;
                }
                default:
This page took 0.023772 seconds and 4 git commands to generate.