Initialize all stack variables to zero, fix uninitialized loglevel variables
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 7 Feb 2012 02:50:16 +0000 (21:50 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 7 Feb 2012 02:50:16 +0000 (21:50 -0500)
If we want the padding behavior to be always the same (for future
extensibility), we need to set those variables to zero when they are
declared on the stack.

Also fix uninitialized loglevel variables in tests, which were failing
on x86_32 due to this.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
14 files changed:
src/bin/lttng/commands/add_context.c
src/bin/lttng/commands/calibrate.c
src/bin/lttng/commands/disable_channels.c
src/bin/lttng/commands/disable_events.c
src/bin/lttng/commands/enable_channels.c
src/bin/lttng/commands/enable_events.c
src/bin/lttng/commands/list.c
src/lib/lttng-ctl/lttng-ctl.c
tests/lttng/kernel_all_events_basic.c
tests/lttng/kernel_event_basic.c
tests/lttng/ust_global_all_events_basic.c
tests/lttng/ust_global_event_basic.c
tests/test_kernel_data_trace.c
tests/test_ust_data_trace.c

index ed4f87fb4e84fd11c4518fa866194d8611da6903..e499ef3d37894eb3aababec3d4ad59c18abbd964 100644 (file)
@@ -369,6 +369,9 @@ static int add_context(char *session_name)
        struct ctx_type *type;
        char *ptr;
 
        struct ctx_type *type;
        char *ptr;
 
+       memset(&context, 0, sizeof(context));
+       memset(&dom, 0, sizeof(dom));
+
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        } else if (opt_userspace) {
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        } else if (opt_userspace) {
index dc95d246956739371fec8bf0f7853f8409c5a43a..61b588e1294eead110e14bb5e043f0d74318b065 100644 (file)
@@ -127,6 +127,9 @@ static int calibrate_lttng(void)
        struct lttng_domain dom;
        struct lttng_calibrate calibrate;
 
        struct lttng_domain dom;
        struct lttng_calibrate calibrate;
 
+       memset(&dom, 0, sizeof(dom));
+       memset(&calibrate, 0, sizeof(calibrate));
+
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
index ccd5446db4a44bb0b1ce4c0f598e63d13d798e87..cfc8561d9ef0339a660ced29dec9677b00670f62 100644 (file)
@@ -92,6 +92,8 @@ static int disable_channels(char *session_name)
        char *channel_name;
        struct lttng_domain dom;
 
        char *channel_name;
        struct lttng_domain dom;
 
+       memset(&dom, 0, sizeof(dom));
+
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
index b30ec1fdc644f5a0e2d2bc3202428f31bfdbfe2d..0a9c833bbb6559fdd3327fff81a65d4290a2cee1 100644 (file)
@@ -100,6 +100,8 @@ static int disable_events(char *session_name)
        char *event_name, *channel_name = NULL;
        struct lttng_domain dom;
 
        char *event_name, *channel_name = NULL;
        struct lttng_domain dom;
 
+       memset(&dom, 0, sizeof(dom));
+
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
index 692480e816f28c2e2d808d326a8520c2a59e750d..91345e051247a6bed7d55be7df10ccee2cfcf023 100644 (file)
@@ -155,6 +155,8 @@ static int enable_channel(char *session_name)
        char *channel_name;
        struct lttng_domain dom;
 
        char *channel_name;
        struct lttng_domain dom;
 
+       memset(&dom, 0, sizeof(dom));
+
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
index e8f55dc7538794c23596f44b1e55faf0ce2fd9e6..6fe393fb6ba3641232a311706b1e98cc267694e1 100644 (file)
@@ -285,6 +285,9 @@ static int enable_events(char *session_name)
        struct lttng_event ev;
        struct lttng_domain dom;
 
        struct lttng_event ev;
        struct lttng_domain dom;
 
+       memset(&ev, 0, sizeof(ev));
+       memset(&dom, 0, sizeof(dom));
+
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
        /* Create lttng domain */
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
index e4ab97cbe920c67c385e30fceccb8a68a271a145..b73d5209f7f023408048fa27f90f9e0a3a45aeb3 100644 (file)
@@ -246,6 +246,8 @@ static int list_ust_events(void)
        struct lttng_event *event_list;
        pid_t cur_pid = 0;
 
        struct lttng_event *event_list;
        pid_t cur_pid = 0;
 
+       memset(&domain, 0, sizeof(domain));
+
        DBG("Getting UST tracing events");
 
        domain.type = LTTNG_DOMAIN_UST;
        DBG("Getting UST tracing events");
 
        domain.type = LTTNG_DOMAIN_UST;
@@ -295,6 +297,8 @@ static int list_kernel_events(void)
        struct lttng_handle *handle;
        struct lttng_event *event_list;
 
        struct lttng_handle *handle;
        struct lttng_event *event_list;
 
+       memset(&domain, 0, sizeof(domain));
+
        DBG("Getting kernel tracing events");
 
        domain.type = LTTNG_DOMAIN_KERNEL;
        DBG("Getting kernel tracing events");
 
        domain.type = LTTNG_DOMAIN_KERNEL;
@@ -556,6 +560,8 @@ int cmd_list(int argc, const char **argv)
        struct lttng_domain domain;
        struct lttng_domain *domains = NULL;
 
        struct lttng_domain domain;
        struct lttng_domain *domains = NULL;
 
+       memset(&domain, 0, sizeof(domain));
+
        if (argc < 1) {
                usage(stderr);
                ret = CMD_ERROR;
        if (argc < 1) {
                usage(stderr);
                ret = CMD_ERROR;
index 1d92facf05cf866ee757a0acc247b5f0225e8b0c..dafe085dc9bc40b81f53a35b13fbc6791969492f 100644 (file)
@@ -74,6 +74,7 @@ static void copy_lttng_domain(struct lttng_domain *dst, struct lttng_domain *src
                                memcpy(dst, src, sizeof(struct lttng_domain));
                                break;
                        default:
                                memcpy(dst, src, sizeof(struct lttng_domain));
                                break;
                        default:
+                               memset(dst, 0, sizeof(struct lttng_domain));
                                dst->type = LTTNG_DOMAIN_KERNEL;
                                break;
                }
                                dst->type = LTTNG_DOMAIN_KERNEL;
                                break;
                }
@@ -484,6 +485,8 @@ int lttng_add_context(struct lttng_handle *handle,
                return -1;
        }
 
                return -1;
        }
 
+       memset(&lsm, 0, sizeof(lsm));
+
        lsm.cmd_type = LTTNG_ADD_CONTEXT;
 
        /* Copy channel name */
        lsm.cmd_type = LTTNG_ADD_CONTEXT;
 
        /* Copy channel name */
@@ -518,6 +521,8 @@ int lttng_enable_event(struct lttng_handle *handle,
                return -1;
        }
 
                return -1;
        }
 
+       memset(&lsm, 0, sizeof(lsm));
+
        /* If no channel name, we put the default name */
        if (channel_name == NULL) {
                copy_string(lsm.u.enable.channel_name, DEFAULT_CHANNEL_NAME,
        /* If no channel name, we put the default name */
        if (channel_name == NULL) {
                copy_string(lsm.u.enable.channel_name, DEFAULT_CHANNEL_NAME,
@@ -557,6 +562,8 @@ int lttng_disable_event(struct lttng_handle *handle, const char *name,
                return -1;
        }
 
                return -1;
        }
 
+       memset(&lsm, 0, sizeof(lsm));
+
        if (channel_name) {
                copy_string(lsm.u.disable.channel_name, channel_name,
                                sizeof(lsm.u.disable.channel_name));
        if (channel_name) {
                copy_string(lsm.u.disable.channel_name, channel_name,
                                sizeof(lsm.u.disable.channel_name));
@@ -596,6 +603,8 @@ int lttng_enable_channel(struct lttng_handle *handle,
                return -1;
        }
 
                return -1;
        }
 
+       memset(&lsm, 0, sizeof(lsm));
+
        memcpy(&lsm.u.channel.chan, chan, sizeof(lsm.u.channel.chan));
 
        lsm.cmd_type = LTTNG_ENABLE_CHANNEL;
        memcpy(&lsm.u.channel.chan, chan, sizeof(lsm.u.channel.chan));
 
        lsm.cmd_type = LTTNG_ENABLE_CHANNEL;
@@ -621,6 +630,8 @@ int lttng_disable_channel(struct lttng_handle *handle, const char *name)
                return -1;
        }
 
                return -1;
        }
 
+       memset(&lsm, 0, sizeof(lsm));
+
        lsm.cmd_type = LTTNG_DISABLE_CHANNEL;
 
        copy_string(lsm.u.disable.channel_name, name,
        lsm.cmd_type = LTTNG_DISABLE_CHANNEL;
 
        copy_string(lsm.u.disable.channel_name, name,
@@ -861,11 +872,13 @@ int lttng_calibrate(struct lttng_handle *handle,
 
 /*
  * Set default channel attributes.
 
 /*
  * Set default channel attributes.
- * If either or both of the arguments are null, nothing happens.
+ * If either or both of the arguments are null, attr content is zeroe'd.
  */
 void lttng_channel_set_default_attr(struct lttng_domain *domain,
                struct lttng_channel_attr *attr)
 {
  */
 void lttng_channel_set_default_attr(struct lttng_domain *domain,
                struct lttng_channel_attr *attr)
 {
+       memset(attr, 0, sizeof(struct lttng_channel_attr));
+
        /* Safety check */
        if (attr == NULL || domain == NULL) {
                return;
        /* Safety check */
        if (attr == NULL || domain == NULL) {
                return;
@@ -896,8 +909,7 @@ void lttng_channel_set_default_attr(struct lttng_domain *domain,
                attr->output = DEFAULT_UST_CHANNEL_OUTPUT;
                break;
        default:
                attr->output = DEFAULT_UST_CHANNEL_OUTPUT;
                break;
        default:
-               /* Default behavior */
-               memset(attr, 0, sizeof(struct lttng_channel_attr));
+               /* Default behavior: leave set to 0. */
                break;
        }
 }
                break;
        }
 }
index 79c2b66ac3c1a9cd83654a7be70a580e18cfbd05..3e12f00f1749a42201060db8424ec217bc527622 100644 (file)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-    struct lttng_handle *handle = NULL;
-    struct lttng_domain dom;
+       struct lttng_handle *handle = NULL;
+       struct lttng_domain dom;
        struct lttng_event event;
        struct lttng_event event;
-    char *channel_name = "channel0";
+       char *channel_name = "channel0";
        char *session_name = "kernel_all_events_basic";
        char *session_name = "kernel_all_events_basic";
-    int ret = 0;
+       int ret = 0;
 
 
-    dom.type = LTTNG_DOMAIN_KERNEL;
-
-       memset(&event, 0, sizeof(struct lttng_event));
+       memset(&dom, 0, sizeof(dom));
+       memset(&event, 0, sizeof(event));
+       dom.type = LTTNG_DOMAIN_KERNEL;
        event.type = LTTNG_EVENT_TRACEPOINT;
        event.type = LTTNG_EVENT_TRACEPOINT;
+       event.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        printf("\nTesting tracing all kernel events:\n");
        printf("-----------\n");
 
        printf("\nTesting tracing all kernel events:\n");
        printf("-----------\n");
index fb1cf42b0f4cc524d4dfcb777abdc085d37f41d1..6a11331ba0d4b872fc0d3dba63b7634002fd6817 100644 (file)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-    struct lttng_handle *handle = NULL;
-    struct lttng_domain dom;
+       struct lttng_handle *handle = NULL;
+       struct lttng_domain dom;
        struct lttng_channel channel;
        struct lttng_event sched_switch;
        struct lttng_event sched_process_exit;
        struct lttng_event sched_process_free;
        struct lttng_channel channel;
        struct lttng_event sched_switch;
        struct lttng_event sched_process_exit;
        struct lttng_event sched_process_free;
-
-    int ret = 0;
-
        char *session_name = "kernel_event_basic";
        char *session_name = "kernel_event_basic";
+       int ret = 0;
+
+       memset(&dom, 0, sizeof(dom));
+       memset(&channel, 0, sizeof(channel));
+       memset(&sched_switch, 0, sizeof(sched_switch));
+       memset(&sched_process_exit, 0, sizeof(sched_process_exit));
+       memset(&sched_process_free, 0, sizeof(sched_process_free));
 
 
-    dom.type = LTTNG_DOMAIN_KERNEL;
+       dom.type = LTTNG_DOMAIN_KERNEL;
 
        strcpy(channel.name, "mychan");
        channel.attr.overwrite = 0;
 
        strcpy(channel.name, "mychan");
        channel.attr.overwrite = 0;
@@ -54,12 +58,15 @@ int main(int argc, char **argv)
 
        strcpy(sched_switch.name, "sched_switch");
        sched_switch.type = LTTNG_EVENT_TRACEPOINT;
 
        strcpy(sched_switch.name, "sched_switch");
        sched_switch.type = LTTNG_EVENT_TRACEPOINT;
+       sched_switch.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        strcpy(sched_process_exit.name, "sched_process_exit");
        sched_process_exit.type = LTTNG_EVENT_TRACEPOINT;
 
        strcpy(sched_process_exit.name, "sched_process_exit");
        sched_process_exit.type = LTTNG_EVENT_TRACEPOINT;
+       sched_process_exit.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        strcpy(sched_process_free.name, "sched_process_free");
        sched_process_free.type = LTTNG_EVENT_TRACEPOINT;
 
        strcpy(sched_process_free.name, "sched_process_free");
        sched_process_free.type = LTTNG_EVENT_TRACEPOINT;
+       sched_process_free.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        printf("\nTesting tracing kernel events:\n");
        printf("-----------\n");
 
        printf("\nTesting tracing kernel events:\n");
        printf("-----------\n");
index 56746a73fbf9fff241e80439560d62540e8c02be..968dd9a6cc3f8100fb2799ae9dd2aa27fae64822 100644 (file)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-    struct lttng_handle *handle = NULL;
-    struct lttng_domain dom;
+       struct lttng_handle *handle = NULL;
+       struct lttng_domain dom;
        struct lttng_event event;
        struct lttng_event event;
-    char *channel_name = "channel0";
+       char *channel_name = "channel0";
        char *session_name = "ust_global_all_events_basic";
        char *session_name = "ust_global_all_events_basic";
-    int ret = 0;
+       int ret = 0;
 
 
-    dom.type = LTTNG_DOMAIN_UST;
-
-       memset(&event, 0, sizeof(struct lttng_event));
+       memset(&dom, 0, sizeof(dom));
+       memset(&event, 0, sizeof(event));
+       dom.type = LTTNG_DOMAIN_UST;
        event.type = LTTNG_EVENT_TRACEPOINT;
        event.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        event.type = LTTNG_EVENT_TRACEPOINT;
        event.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
index 5a7af53e2677c5a8a273a59fd7e604429b9d70d5..2e05fffe58f5c7cb8811081b25e259420315b9d9 100644 (file)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-    struct lttng_handle *handle = NULL;
-    struct lttng_domain dom;
+       struct lttng_handle *handle = NULL;
+       struct lttng_domain dom;
        struct lttng_channel channel;
        struct lttng_event ev1, ev2, ev3;
        struct lttng_channel channel;
        struct lttng_event ev1, ev2, ev3;
-
-    int ret = 0;
-
        char *session_name = "ust_global_event_basic";
        char *session_name = "ust_global_event_basic";
+       int ret = 0;
 
 
-    dom.type = LTTNG_DOMAIN_UST;
+       memset(&dom, 0, sizeof(dom));
+       memset(&channel, 0, sizeof(channel));
+       memset(&ev1, 0, sizeof(ev1));
+       memset(&ev2, 0, sizeof(ev2));
+       memset(&ev3, 0, sizeof(ev3));
 
 
+       dom.type = LTTNG_DOMAIN_UST;
        strcpy(channel.name, "mychan");
        channel.attr.overwrite = 0;
        channel.attr.subbuf_size = 4096;
        strcpy(channel.name, "mychan");
        channel.attr.overwrite = 0;
        channel.attr.subbuf_size = 4096;
index 6dba1f523a42089c38f70ead89cf48482d345887..bfc0f41afd2ce320c32fe26766aee4a7150b118f 100644 (file)
@@ -117,6 +117,8 @@ static void create_kernel_channel(void)
        struct ltt_kernel_channel *chan;
        struct lttng_channel attr;
 
        struct ltt_kernel_channel *chan;
        struct lttng_channel attr;
 
+       memset(&attr, 0, sizeof(attr));
+
        printf("Creating kernel channel: ");
        chan = trace_kernel_create_channel(&attr, PATH1);
        assert(chan != NULL);
        printf("Creating kernel channel: ");
        chan = trace_kernel_create_channel(&attr, PATH1);
        assert(chan != NULL);
@@ -141,8 +143,10 @@ static void create_kernel_event(void)
        struct ltt_kernel_event *event;
        struct lttng_event ev;
 
        struct ltt_kernel_event *event;
        struct lttng_event ev;
 
+       memset(&ev, 0, sizeof(ev));
        strncpy(ev.name, get_random_string(), LTTNG_KERNEL_SYM_NAME_LEN);
        ev.type = LTTNG_EVENT_TRACEPOINT;
        strncpy(ev.name, get_random_string(), LTTNG_KERNEL_SYM_NAME_LEN);
        ev.type = LTTNG_EVENT_TRACEPOINT;
+       ev.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        printf("Creating kernel event: ");
        event = trace_kernel_create_event(&ev);
 
        printf("Creating kernel event: ");
        event = trace_kernel_create_event(&ev);
index 4547b49a292a434ec90b67425ca9393827e0fa5a..6acd7a0d083adba911d171e9c2d69e4fd10ada19 100644 (file)
@@ -122,6 +122,8 @@ static void create_ust_channel(void)
        struct ltt_ust_channel *uchan;
        struct lttng_channel attr;
 
        struct ltt_ust_channel *uchan;
        struct lttng_channel attr;
 
+       memset(&attr, 0, sizeof(attr));
+
        strncpy(attr.name, "channel0", 8);
 
        printf("Creating UST channel: ");
        strncpy(attr.name, "channel0", 8);
 
        printf("Creating UST channel: ");
@@ -147,8 +149,10 @@ static void create_ust_event(void)
        struct ltt_ust_event *event;
        struct lttng_event ev;
 
        struct ltt_ust_event *event;
        struct lttng_event ev;
 
+       memset(&ev, 0, sizeof(ev));
        strncpy(ev.name, get_random_string(), LTTNG_SYMBOL_NAME_LEN);
        ev.type = LTTNG_EVENT_TRACEPOINT;
        strncpy(ev.name, get_random_string(), LTTNG_SYMBOL_NAME_LEN);
        ev.type = LTTNG_EVENT_TRACEPOINT;
+       ev.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
 
        printf("Creating UST event: ");
        event = trace_ust_create_event(&ev);
 
        printf("Creating UST event: ");
        event = trace_ust_create_event(&ev);
This page took 0.033138 seconds and 4 git commands to generate.