projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: compile without UST support
[lttng-tools.git]
/
src
/
common
/
runas.c
diff --git
a/src/common/runas.c
b/src/common/runas.c
index d75eb21027ce0ae2b7df768698d8c913bb4297ea..3ae2e4c38d35e5d943f8ca9f3e49213d14472ed4 100644
(file)
--- a/
src/common/runas.c
+++ b/
src/common/runas.c
@@
-30,7
+30,7
@@
#include <sched.h>
#include <sys/signal.h>
#include <sched.h>
#include <sys/signal.h>
-#include <common/
error
.h>
+#include <common/
common
.h>
#include <common/utils.h>
#include <common/compat/mman.h>
#include <common/compat/clone.h>
#include <common/utils.h>
#include <common/compat/mman.h>
#include <common/compat/clone.h>
@@
-96,8
+96,15
@@
int _mkdir_recursive(void *_data)
static
int _mkdir(void *_data)
{
static
int _mkdir(void *_data)
{
+ int ret;
struct run_as_mkdir_data *data = _data;
struct run_as_mkdir_data *data = _data;
- return mkdir(data->path, data->mode);
+
+ ret = mkdir(data->path, data->mode);
+ if (ret < 0) {
+ ret = -errno;
+ }
+
+ return ret;
}
static
}
static
@@
-130,14
+137,16
@@
int child_run_as(void *_data)
ret = setegid(data->gid);
if (ret < 0) {
PERROR("setegid");
ret = setegid(data->gid);
if (ret < 0) {
PERROR("setegid");
- return EXIT_FAILURE;
+ sendret.i = -1;
+ goto write_return;
}
}
if (data->uid != geteuid()) {
ret = seteuid(data->uid);
if (ret < 0) {
PERROR("seteuid");
}
}
if (data->uid != geteuid()) {
ret = seteuid(data->uid);
if (ret < 0) {
PERROR("seteuid");
- return EXIT_FAILURE;
+ sendret.i = -1;
+ goto write_return;
}
}
/*
}
}
/*
@@
-145,6
+154,8
@@
int child_run_as(void *_data)
*/
umask(0);
sendret.i = (*data->cmd)(data->data);
*/
umask(0);
sendret.i = (*data->cmd)(data->data);
+
+write_return:
/* send back return value */
writeleft = sizeof(sendret);
index = 0;
/* send back return value */
writeleft = sizeof(sendret);
index = 0;
@@
-297,7
+308,7
@@
int run_as(int (*cmd)(void *data), void *data, uid_t uid, gid_t gid)
}
}
}
}
-__attribute__((visibility("hidden")))
+LTTNG_HIDDEN
int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
@@
-309,7
+320,7
@@
int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid)
return run_as(_mkdir_recursive, &data, uid, gid);
}
return run_as(_mkdir_recursive, &data, uid, gid);
}
-__attribute__((visibility("hidden")))
+LTTNG_HIDDEN
int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
@@
-325,7
+336,7
@@
int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid)
* Note: open_run_as is currently not working. We'd need to pass the fd
* opened in the child to the parent.
*/
* Note: open_run_as is currently not working. We'd need to pass the fd
* opened in the child to the parent.
*/
-__attribute__((visibility("hidden")))
+LTTNG_HIDDEN
int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_open_data data;
int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_open_data data;
This page took
0.027113 seconds
and
5
git commands to generate.