projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: worker structure is leaked in run_as process
[lttng-tools.git]
/
src
/
common
/
runas.c
diff --git
a/src/common/runas.c
b/src/common/runas.c
index c81652e9f4b4f3a09ca1747c0b030aa9d1e13c42..4fc229b0d0317452df0b3db08c78ab4c998a97d3 100644
(file)
--- a/
src/common/runas.c
+++ b/
src/common/runas.c
@@
-877,7
+877,7
@@
int run_as_create_worker_no_lock(const char *procname)
worker->procname = strdup(procname);
if (!worker->procname) {
ret = -ENOMEM;
worker->procname = strdup(procname);
if (!worker->procname) {
ret = -ENOMEM;
- goto e
nd
;
+ goto e
rror_procname_alloc
;
}
/* Create unix socket. */
if (lttcomm_create_anon_unix_socketpair(worker->sockpair) < 0) {
}
/* Create unix socket. */
if (lttcomm_create_anon_unix_socketpair(worker->sockpair) < 0) {
@@
-921,6
+921,8
@@
int run_as_create_worker_no_lock(const char *procname)
ret = -1;
}
worker->sockpair[1] = -1;
ret = -1;
}
worker->sockpair[1] = -1;
+ free(worker->procname);
+ free(worker);
LOG(ret ? PRINT_ERR : PRINT_DBG, "run_as worker exiting (ret = %d)", ret);
exit(ret ? EXIT_FAILURE : EXIT_SUCCESS);
} else {
LOG(ret ? PRINT_ERR : PRINT_DBG, "run_as worker exiting (ret = %d)", ret);
exit(ret ? EXIT_FAILURE : EXIT_SUCCESS);
} else {
@@
-960,6
+962,8
@@
error_fork:
worker->sockpair[i] = -1;
}
error_sock:
worker->sockpair[i] = -1;
}
error_sock:
+ free(worker->procname);
+error_procname_alloc:
free(worker);
return ret;
}
free(worker);
return ret;
}
This page took
0.025381 seconds
and
5
git commands to generate.