Fix uninitialized kprobe attributes
[lttng-tools.git] / lttng / commands / enable_events.c
index 9657571473410558d15ea83d79f9aabd9baf8655..f5e24315629e3b02b918eb4000291a4b7f4f54de 100644 (file)
@@ -104,7 +104,7 @@ static void usage(FILE *ofp)
 static int parse_probe_opts(struct lttng_event *ev, char *opt)
 {
        int ret;
-       uint64_t hex;
+       char s_hex[19];
        char name[LTTNG_SYMBOL_NAME_LEN];
 
        if (opt == NULL) {
@@ -113,30 +113,33 @@ static int parse_probe_opts(struct lttng_event *ev, char *opt)
        }
 
        /* Check for symbol+offset */
-       ret = sscanf(opt, "%[^'+']+%" SCNu64, name, &hex);
+       ret = sscanf(opt, "%[^'+']+%s", name, s_hex);
        if (ret == 2) {
                strncpy(ev->attr.probe.symbol_name, name, LTTNG_SYMBOL_NAME_LEN);
                DBG("probe symbol %s", ev->attr.probe.symbol_name);
-               if (hex == 0) {
-                       ERR("Invalid probe offset %" PRIu64, hex);
+               if (strlen(s_hex) == 0) {
+                       ERR("Invalid probe offset %s", s_hex);
                        ret = -1;
                        goto error;
                }
-               ev->attr.probe.offset = hex;
+               ev->attr.probe.offset = strtoul(s_hex, NULL, 0);
                DBG("probe offset %" PRIu64, ev->attr.probe.offset);
+               ev->attr.probe.addr = 0;
                goto error;
        }
 
        /* Check for address */
-       ret = sscanf(opt, "%" SCNu64, &hex);
+       ret = sscanf(opt, "%s", s_hex);
        if (ret > 0) {
-               if (hex == 0) {
-                       ERR("Invalid probe address %" PRIu64, hex);
+               if (strlen(s_hex) == 0) {
+                       ERR("Invalid probe address %s", s_hex);
                        ret = -1;
                        goto error;
                }
-               ev->attr.probe.addr = hex;
+               ev->attr.probe.addr = strtoul(s_hex, NULL, 0);
                DBG("probe addr %" PRIu64, ev->attr.probe.addr);
+               ev->attr.probe.offset = 0;
+               memset(ev->attr.probe.symbol_name, 0, LTTNG_SYMBOL_NAME_LEN);
                goto error;
        }
 
@@ -224,8 +227,6 @@ static int enable_events(void)
                        ret = lttng_enable_event(&dom, &ev, channel_name);
                        if (ret == 0) {
                                MSG("Kernel event %s created in channel %s", event_name, channel_name);
-                       } else if (ret < 0) {
-                               ERR("Unable to find event %s", ev.name);
                        }
                } else if (opt_userspace) {             /* User-space tracer action */
                        /*
This page took 0.023666 seconds and 4 git commands to generate.