summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
997edb9)
The lttng client parses hexadecimal addresses using, at some point,
strtoul(). Using this function effectively caps addresses and
offsets to MAX_UINT32 resulting in failures to enable kprobes
against a 64-bit kernel using a 32-bit client.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: If619e9e84413de5cd32d8c06f363152caaf5ac46
PERROR("Failed to copy kernel probe location symbol name.");
goto error;
}
PERROR("Failed to copy kernel probe location symbol name.");
goto error;
}
- offset = strtoul(s_hex, NULL, 0);
+ offset = strtoull(s_hex, NULL, 0);
*location = lttng_kernel_probe_location_symbol_create(
symbol_name, offset);
*location = lttng_kernel_probe_location_symbol_create(
symbol_name, offset);
- address = strtoul(s_hex, NULL, 0);
+ address = strtoull(s_hex, NULL, 0);
*location = lttng_kernel_probe_location_address_create(address);
if (!*location) {
ERR("Failed to create symbol kernel probe location.");
*location = lttng_kernel_probe_location_address_create(address);
if (!*location) {
ERR("Failed to create symbol kernel probe location.");
ret = CMD_ERROR;
goto end;
}
ret = CMD_ERROR;
goto end;
}
- ev->attr.probe.offset = strtoul(s_hex, NULL, 0);
+ ev->attr.probe.offset = strtoull(s_hex, NULL, 0);
DBG("probe offset %" PRIu64, ev->attr.probe.offset);
ev->attr.probe.addr = 0;
goto end;
DBG("probe offset %" PRIu64, ev->attr.probe.offset);
ev->attr.probe.addr = 0;
goto end;
ret = CMD_ERROR;
goto end;
}
ret = CMD_ERROR;
goto end;
}
- ev->attr.probe.addr = strtoul(s_hex, NULL, 0);
+ ev->attr.probe.addr = strtoull(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);
DBG("probe addr %" PRIu64, ev->attr.probe.addr);
ev->attr.probe.offset = 0;
memset(ev->attr.probe.symbol_name, 0, LTTNG_SYMBOL_NAME_LEN);