Fix: notification test: resources leak and return handling
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 2 Jun 2017 18:52:30 +0000 (14:52 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 13 Jun 2017 15:32:43 +0000 (11:32 -0400)
Fixes CID #137591313759121375911 1375910 1375909 1375908

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tests/regression/tools/notification/base_client.c
tests/regression/tools/notification/notification.c

index 21a8ac3fe7a2a33775919aa4fab808be7157e31e..7fbaa9e4dc77741047e43dffe9635733402172b3 100644 (file)
@@ -297,7 +297,9 @@ end:
        if (trigger) {
                lttng_unregister_trigger(trigger);
        }
-       lttng_notification_channel_unsubscribe(notification_channel, condition);
+       if (lttng_notification_channel_unsubscribe(notification_channel, condition)) {
+               printf("error: channel unsubscribe error\n");
+       }
        lttng_trigger_destroy(trigger);
        lttng_condition_destroy(condition);
        lttng_action_destroy(action);
@@ -330,12 +332,27 @@ int handle_condition(
        }
 
        /* Fetch info to test */
-       lttng_condition_buffer_usage_get_session_name(condition,
+       ret = lttng_condition_buffer_usage_get_session_name(condition,
                        &condition_session_name);
-       lttng_condition_buffer_usage_get_channel_name(condition,
+       if (ret) {
+               printf("error: session name could not be fetched\n");
+               ret = 1;
+               goto end;
+       }
+       ret = lttng_condition_buffer_usage_get_channel_name(condition,
                        &condition_channel_name);
-       lttng_condition_buffer_usage_get_domain_type(condition,
+       if (ret) {
+               printf("error: channel name could not be fetched\n");
+               ret = 1;
+               goto end;
+       }
+       ret = lttng_condition_buffer_usage_get_domain_type(condition,
                        &condition_domain_type);
+       if (ret) {
+               printf("error: domain type could not be fetched\n");
+               ret = 1;
+               goto end;
+       }
 
        if (strcmp(condition_session_name, session_name) != 0) {
                printf("error: session name differs\n");
index f69e884ae5435484265bed5cbfe767ef03e20991..5de09e2016e1ed33947780d11ab344d78fd76780 100644 (file)
@@ -68,6 +68,9 @@ int write_pipe(const char *path, uint8_t data)
        ret = write(fd, &data , sizeof(data));
        if (ret < 1) {
                perror("Named pipe write failed");
+               if (close(fd)) {
+                       perror("Named pipe close failed");
+               }
                ret = -1;
                goto end;
        }
@@ -563,6 +566,7 @@ end:
        lttng_trigger_destroy(trigger);
        lttng_action_destroy(action);
        lttng_condition_destroy(low_condition);
+       lttng_condition_destroy(high_condition);
        lttng_condition_destroy(dummy_invalid_condition);
        lttng_condition_destroy(dummy_condition);
 }
This page took 0.036111 seconds and 4 git commands to generate.