Skip to content

Commit 98b45d6

Browse files
committed
Cleanup: Get rid of globals ruid/euid
1 parent 352c782 commit 98b45d6

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

src/rtapi/uspace_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ int rtapi_shmem_new(int key, int module_id, unsigned long int size)
116116
*/
117117
/* ensure the segment is owned by user, not root */
118118
if(geteuid() == 0) {
119-
stat.shm_perm.uid = ruid;
119+
stat.shm_perm.uid = WithRoot::getRuid();
120120
res = shmctl(shmem->id, IPC_SET, &stat);
121121
if(res < 0) perror("shmctl IPC_SET");
122122
}

src/rtapi/uspace_rtapi_app.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include <string.h>
2424

2525
std::atomic_int WithRoot::level;
26-
uid_t euid, ruid;
26+
uid_t WithRoot::ruid, WithRoot::euid;
2727

2828
WithRoot::WithRoot() {
2929
if (!level++) {
@@ -41,6 +41,11 @@ WithRoot::~WithRoot() {
4141
}
4242
}
4343

44+
void WithRoot::init(uid_t ruid_ini, uid_t euid_ini){
45+
ruid=ruid_ini;
46+
euid=euid_ini;
47+
}
48+
4449
rtapi_task::rtapi_task()
4550
: magic{}, id{}, owner{}, uses_fp{}, stacksize{}, prio{}, period{}, nextstart{}, pll_correction{},
4651
pll_correction_limit{}, arg{}, taskcode{}

src/rtapi/uspace_rtapi_app.hh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,16 @@ void rtapi_timespec_advance(struct timespec &result, const struct timespec &src,
4646
struct WithRoot {
4747
WithRoot();
4848
~WithRoot();
49+
static void init(uid_t ruid_ini, uid_t euid_ini);
50+
static uid_t getRuid(){
51+
return ruid;
52+
}
53+
static uid_t getEuid(){
54+
return euid;
55+
}
56+
private:
4957
static std::atomic_int level;
58+
static uid_t ruid, euid;
5059
};
5160

5261
struct rtapi_task {
@@ -113,7 +122,5 @@ template <class T = rtapi_task> T *rtapi_get_task(int task_id) {
113122
int find_rt_cpu_number();
114123
void set_namef(const char *fmt, ...);
115124

116-
extern uid_t euid, ruid; //ToDo: Improve
117-
118125
#define WITH_ROOT WithRoot root
119126
#endif

src/rtapi/uspace_rtapi_main.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,9 @@ int main(int argc, char **argv) {
502502
}
503503
fprintf(stderr, "Running with fallback_uid. getuid()=%d geteuid()=%d\n", getuid(), geteuid());
504504
}
505-
ruid = getuid();
506-
euid = geteuid();
505+
uid_t ruid = getuid();
506+
uid_t euid = geteuid();
507+
WithRoot::init(ruid, euid);
507508
if (setresuid(euid, euid, ruid) != 0) {
508509
perror("setresuid");
509510
abort();
@@ -768,7 +769,7 @@ static RtapiApp *makeDllApp(std::string dllName, int policy) {
768769

769770
static RtapiApp *makeApp() {
770771
RtapiApp *app;
771-
if (euid != 0 || harden_rt() < 0) {
772+
if (WithRoot::getEuid() != 0 || harden_rt() < 0) {
772773
app = makeDllApp("libuspace-posix.so.0", SCHED_OTHER);
773774
} else {
774775
WithRoot r;

0 commit comments

Comments
 (0)