static
int run_as_noclone(int (*cmd)(void *data), void *data, uid_t uid, gid_t gid)
{
- return cmd(data);
+ int ret;
+ mode_t old_mask;
+
+ old_mask = umask(0);
+ ret = cmd(data);
+ umask(old_mask);
+
+ return ret;
}
static
}
}
+__attribute__((visibility("hidden")))
int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
return run_as(_mkdir_recursive, &data, uid, gid);
}
+__attribute__((visibility("hidden")))
int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_mkdir_data data;
* 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")))
int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid)
{
struct run_as_open_data data;