Fix: session-descriptor.c: Dereference before null check
[lttng-tools.git] / src / common / session-descriptor.c
index 6f0a357e3e04a25eee7173e08a31c5114e4eefa4..6dea5ee7c09de528ed998113f64502f7748ea75e 100644 (file)
@@ -522,6 +522,10 @@ _lttng_session_descriptor_live_network_create(
 
        descriptor = _lttng_session_descriptor_live_create(name,
                        live_timer_interval_us);
+       if (!descriptor) {
+               goto error;
+       }
+
        descriptor->base.output_type =
                        LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NETWORK;
 
@@ -550,14 +554,8 @@ lttng_session_descriptor_live_create(
        struct lttng_session_descriptor_live *descriptor;
 
        descriptor = _lttng_session_descriptor_live_create(name, live_timer_us);
-       if (!descriptor) {
-               goto error;
-       }
 
        return descriptor ? &descriptor->base : NULL;
-error:
-       lttng_session_descriptor_destroy(descriptor ? &descriptor->base : NULL);
-       return NULL;
 }
 
 struct lttng_session_descriptor *
@@ -1178,3 +1176,26 @@ int lttng_session_descriptor_assign(
 end:
        return ret;
 }
+
+LTTNG_HIDDEN
+int lttng_session_descriptor_get_base_path(struct lttng_session_descriptor *dst,
+               const char **_base_path)
+{
+       switch (dst->output_type) {
+       case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NETWORK:
+       {
+               if (dst->output.network.control &&
+                               dst->output.network.control->subdir[0]) {
+                       *_base_path = dst->output.network.control->subdir;
+               } else {
+                       *_base_path = NULL;
+               }
+               break;
+       }
+       case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_LOCAL:
+       case LTTNG_SESSION_DESCRIPTOR_OUTPUT_TYPE_NONE:
+               *_base_path = NULL;
+               break;
+       }
+       return 0;
+}
This page took 0.024855 seconds and 4 git commands to generate.