Fix: Exclusion check iterates multiple times on same array
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 5 May 2017 17:45:36 +0000 (13:45 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sat, 6 May 2017 19:52:49 +0000 (15:52 -0400)
When specifying exclusions not contained in the event string warning
message is printed more than once.

For example, running the following command:

  lttng enable-event -u 'event_name_*' --exclude=not_event,other_event,my_event

Will result in this warning:
  Warning: Event event_name_*: not_event does not exclude any events from event_name_*
  Warning: Event event_name_*: other_event does not exclude any events from event_name_*
  Warning: Event event_name_*: my_event does not exclude any events from event_name_*
  Warning: Event event_name_*: other_event does not exclude any events from event_name_*
  Warning: Event event_name_*: my_event does not exclude any events from event_name_*
  Warning: Event event_name_*: my_event does not exclude any events from event_name_*

The following should be printed:
  Warning: Event event_name_*: not_event does not exclude any events from event_name_*
  Warning: Event event_name_*: other_event does not exclude any events from event_name_*
  Warning: Event event_name_*: my_event does not exclude any events from event_name_*

This is due to a bad indexing of the exclusions array.

Since we are already iterating on the exclusions array, pass the
exclusions directly with check_exclusion_subset().

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng/commands/enable_events.c

index cc79b0b749247f83123b5252e1aed833bb3fd669..0c001fd9e7fb0cb0a4510858c1c8b78a311c03d1 100644 (file)
@@ -504,24 +504,6 @@ end:
        return ret;
 }
 
-static
-int check_exclusions_subsets(const char *event_name,
-               char * const *exclusions)
-{
-       int ret = 0;
-       char * const *item;
-
-       for (item = exclusions; *item; item++) {
-               ret = check_exclusion_subsets(event_name, *item);
-               if (ret) {
-                       goto end;
-               }
-       }
-
-end:
-       return ret;
-}
-
 static
 int create_exclusion_list_and_validate(const char *event_name,
                const char *exclusions_arg,
@@ -554,8 +536,7 @@ int create_exclusion_list_and_validate(const char *event_name,
                for (exclusion = exclusions; *exclusion; exclusion++) {
                        if (!strutils_is_star_glob_pattern(*exclusion) ||
                                        strutils_is_star_at_the_end_only_glob_pattern(*exclusion)) {
-                               ret = check_exclusions_subsets(
-                                       event_name, exclusion);
+                               ret = check_exclusion_subsets(event_name, *exclusion);
                                if (ret) {
                                        goto error;
                                }
This page took 0.027546 seconds and 5 git commands to generate.