summaryrefslogtreecommitdiffstats
path: root/EnvScreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'EnvScreen.c')
-rw-r--r--EnvScreen.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/EnvScreen.c b/EnvScreen.c
index c989d26f..1881b1ff 100644
--- a/EnvScreen.c
+++ b/EnvScreen.c
@@ -60,23 +60,20 @@ static inline void addLine(const char* line, Vector* lines, Panel* panel, const
static void EnvScreen_scan(EnvScreen* this, Vector* lines, IncSet* inc) {
Panel* panel = this->display;
int idx = MAX(Panel_getSelectedIndex(panel), 0);
- uid_t uid = getuid();
Panel_prune(panel);
- if (uid == 0 || uid == this->process->st_uid) {
- char *env = Platform_getProcessEnv(this->process->pid);
- if (env) {
- for (char *p = env; *p; p = strrchr(p, 0)+1)
- addLine(p, lines, panel, IncSet_filter(inc));
- free(env);
- }
- else {
- addLine("Could not read process environment.", lines, panel, IncSet_filter(inc));
- }
+ uid_t euid = geteuid();
+ seteuid(getuid());
+ char *env = Platform_getProcessEnv(this->process->pid);
+ seteuid(euid);
+ if (env) {
+ for (char *p = env; *p; p = strrchr(p, 0)+1)
+ addLine(p, lines, panel, IncSet_filter(inc));
+ free(env);
}
else {
- addLine("Process belongs to different user.", lines, panel, IncSet_filter(inc));
+ addLine("Could not read process environment.", lines, panel, IncSet_filter(inc));
}
Vector_insertionSort(lines);