Backport: trackers: commands: validate duplicate options
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 5 Jul 2018 14:50:18 +0000 (10:50 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 21 Sep 2018 04:00:52 +0000 (00:00 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
src/bin/lttng/commands/track-untrack.c

index c860346f75a37df35309077e5fb6a9276e6c4861..00da87617b762c7965c0d325d0118c7e9a94aa81 100644 (file)
@@ -518,26 +518,56 @@ int cmd_track_untrack(enum cmd_type cmd_type, const char *cmd_str,
                case OPT_SESSION:
                        break;
                case OPT_PID:
+                       if (opt_pid.used) {
+                               ERR("Duplicate --pid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_pid.used = 1;
                        type_state = STATE_PID;
                        break;
                case OPT_VPID:
+                       if (opt_vpid.used) {
+                               ERR("Duplicate --vpid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_vpid.used = 1;
                        type_state = STATE_VPID;
                        break;
                case OPT_UID:
+                       if (opt_uid.used) {
+                               ERR("Duplicate --uid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_uid.used = 1;
                        type_state = STATE_UID;
                        break;
                case OPT_VUID:
+                       if (opt_vuid.used) {
+                               ERR("Duplicate --vuid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_vuid.used = 1;
                        type_state = STATE_VUID;
                        break;
                case OPT_GID:
+                       if (opt_gid.used) {
+                               ERR("Duplicate --gid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_gid.used = 1;
                        type_state = STATE_GID;
                        break;
                case OPT_VGID:
+                       if (opt_vgid.used) {
+                               ERR("Duplicate --vgid option is forbidden.\n");
+                               command_ret = CMD_ERROR;
+                               goto end;
+                       }
                        opt_vgid.used = 1;
                        type_state = STATE_VGID;
                        break;
This page took 0.027506 seconds and 5 git commands to generate.