projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: using putenv() and free()-ing the value is invalid
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
main.c
diff --git
a/src/bin/lttng-sessiond/main.c
b/src/bin/lttng-sessiond/main.c
index 1eaf9bef330ff62a74b9665c88fc490824d94728..297db20ce062201630bd96ab91f268b79897916b 100644
(file)
--- a/
src/bin/lttng-sessiond/main.c
+++ b/
src/bin/lttng-sessiond/main.c
@@
-2450,20
+2450,18
@@
static pid_t spawn_consumerd(struct consumer_data *consumer_data)
if (!tmp) {
tmp = "";
}
if (!tmp) {
tmp = "";
}
- tmplen = strlen("LD_LIBRARY_PATH=")
- + strlen(config.consumerd64_lib_dir.value) + 1 /* : */ + strlen(tmp);
+ tmplen = strlen(config.consumerd64_lib_dir.value) + 1 /* : */ + strlen(tmp);
tmpnew = zmalloc(tmplen + 1 /* \0 */);
if (!tmpnew) {
ret = -ENOMEM;
goto error;
}
tmpnew = zmalloc(tmplen + 1 /* \0 */);
if (!tmpnew) {
ret = -ENOMEM;
goto error;
}
- strcpy(tmpnew, "LD_LIBRARY_PATH=");
strcat(tmpnew, config.consumerd64_lib_dir.value);
if (tmp[0] != '\0') {
strcat(tmpnew, ":");
strcat(tmpnew, tmp);
}
strcat(tmpnew, config.consumerd64_lib_dir.value);
if (tmp[0] != '\0') {
strcat(tmpnew, ":");
strcat(tmpnew, tmp);
}
- ret =
putenv(tmpnew
);
+ ret =
setenv("LD_LIBRARY_PATH", tmpnew, 1
);
if (ret) {
ret = -errno;
free(tmpnew);
if (ret) {
ret = -errno;
free(tmpnew);
@@
-2491,20
+2489,18
@@
static pid_t spawn_consumerd(struct consumer_data *consumer_data)
if (!tmp) {
tmp = "";
}
if (!tmp) {
tmp = "";
}
- tmplen = strlen("LD_LIBRARY_PATH=")
- + strlen(config.consumerd32_lib_dir.value) + 1 /* : */ + strlen(tmp);
+ tmplen = strlen(config.consumerd32_lib_dir.value) + 1 /* : */ + strlen(tmp);
tmpnew = zmalloc(tmplen + 1 /* \0 */);
if (!tmpnew) {
ret = -ENOMEM;
goto error;
}
tmpnew = zmalloc(tmplen + 1 /* \0 */);
if (!tmpnew) {
ret = -ENOMEM;
goto error;
}
- strcpy(tmpnew, "LD_LIBRARY_PATH=");
strcat(tmpnew, config.consumerd32_lib_dir.value);
if (tmp[0] != '\0') {
strcat(tmpnew, ":");
strcat(tmpnew, tmp);
}
strcat(tmpnew, config.consumerd32_lib_dir.value);
if (tmp[0] != '\0') {
strcat(tmpnew, ":");
strcat(tmpnew, tmp);
}
- ret =
putenv(tmpnew
);
+ ret =
setenv("LD_LIBRARY_PATH", tmpnew, 1
);
if (ret) {
ret = -errno;
free(tmpnew);
if (ret) {
ret = -errno;
free(tmpnew);
@@
-2521,8
+2517,8
@@
static pid_t spawn_consumerd(struct consumer_data *consumer_data)
break;
}
default:
break;
}
default:
-
PERRO
R("unknown consumer type");
- e
xit(EXIT_FAILURE)
;
+
ER
R("unknown consumer type");
+ e
rrno = 0
;
}
if (errno != 0) {
PERROR("Consumer execl()");
}
if (errno != 0) {
PERROR("Consumer execl()");
This page took
0.025335 seconds
and
4
git commands to generate.