forked from enlightenment/enlightenment
fix setuid stuff - oops. always allowed :)
todo changes - still minor bug in fav icons. :( SVN revision: 25430
This commit is contained in:
parent
3327380d37
commit
784a1e985e
5
TODO
5
TODO
|
@ -8,8 +8,9 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
BUGS / FIXES
|
BUGS / FIXES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
* BUG: "favorite" places in fsel (left pane) doesnt display icons nor does it
|
* BUG: "favorite" places in fsel (left pane) has 1 bug left - e app caching.
|
||||||
jump to links where URL points to in the .desktop file.
|
if you modify a .desktop file while e is running - it will not find the
|
||||||
|
changes until a restart (kind of bad for a fm/file selector :()
|
||||||
* BUG: e17 screen res diaolg doesnt work under xephyr - why?
|
* BUG: e17 screen res diaolg doesnt work under xephyr - why?
|
||||||
* BUG: the ibar specific menu only shows when you right click on icons (and not
|
* BUG: the ibar specific menu only shows when you right click on icons (and not
|
||||||
on the bar itself). so, if there are no icons you can't get to the config.
|
on the bar itself). so, if there are no icons you can't get to the config.
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <Evas.h>
|
#include <Evas.h>
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static int auth_action_ok(char *a);
|
static int auth_action_ok(char *a, uid_t uid, gid_t gid);
|
||||||
static int auth_etc_enlightenment_sysactions(char *a, char *u, char *g);
|
static int auth_etc_enlightenment_sysactions(char *a, char *u, char *g);
|
||||||
static char *get_word(char *s, char *d);
|
static char *get_word(char *s, char *d);
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ main(int argc, char **argv)
|
||||||
int i;
|
int i;
|
||||||
int test = 0;
|
int test = 0;
|
||||||
char *action, *cmd;
|
char *action, *cmd;
|
||||||
|
uid_t uid;
|
||||||
|
gid_t gid;
|
||||||
|
|
||||||
for (i = 1; i < argc; i++)
|
for (i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
|
@ -54,15 +56,23 @@ main(int argc, char **argv)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (seteuid(0))
|
uid = getuid();
|
||||||
|
gid = getgid();
|
||||||
|
|
||||||
|
if (setuid(0) != 0)
|
||||||
{
|
{
|
||||||
printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n");
|
printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n");
|
||||||
exit(5);
|
exit(5);
|
||||||
}
|
}
|
||||||
|
if (setgid(0) != 0)
|
||||||
|
{
|
||||||
|
printf("ERROR: UNABLE TO ASSUME ROOT GROUP PRIVILEDGES\n");
|
||||||
|
exit(7);
|
||||||
|
}
|
||||||
|
|
||||||
evas_init();
|
evas_init();
|
||||||
|
|
||||||
if (!auth_action_ok(action))
|
if (!auth_action_ok(action, uid, gid))
|
||||||
{
|
{
|
||||||
printf("ERROR: ACTION NOT ALLOWED: %s\n", action);
|
printf("ERROR: ACTION NOT ALLOWED: %s\n", action);
|
||||||
exit(10);
|
exit(10);
|
||||||
|
@ -84,18 +94,18 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static int
|
static int
|
||||||
auth_action_ok(char *a)
|
auth_action_ok(char *a, uid_t uid, gid_t gid)
|
||||||
{
|
{
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
struct group *gp;
|
struct group *gp;
|
||||||
char *usr = NULL, *grp;
|
char *usr = NULL, *grp;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
pw = getpwuid(getuid());
|
pw = getpwuid(uid);
|
||||||
if (!pw) return 0;
|
if (!pw) return 0;
|
||||||
usr = pw->pw_name;
|
usr = pw->pw_name;
|
||||||
if (!usr) return 0;
|
if (!usr) return 0;
|
||||||
gp = getgrgid(getgid());
|
gp = getgrgid(gid);
|
||||||
if (gp) grp = gp->gr_name;
|
if (gp) grp = gp->gr_name;
|
||||||
/* first stage - check:
|
/* first stage - check:
|
||||||
* PREFIX/etc/enlightenment/sysactions.conf
|
* PREFIX/etc/enlightenment/sysactions.conf
|
||||||
|
@ -117,9 +127,9 @@ auth_etc_enlightenment_sysactions(char *a, char *u, char *g)
|
||||||
int allow = 0;
|
int allow = 0;
|
||||||
int deny = 0;
|
int deny = 0;
|
||||||
|
|
||||||
snprintf(file, sizeof(file), "/etc/enlightenment/sysactions.conf");
|
// snprintf(file, sizeof(file), "/etc/enlightenment/sysactions.conf");
|
||||||
f = fopen(file, "r");
|
// f = fopen(file, "r");
|
||||||
if (!f)
|
// if (!f)
|
||||||
{
|
{
|
||||||
snprintf(file, sizeof(file), PACKAGE_SYSCONF_DIR"/enlightenment/sysactions.conf");
|
snprintf(file, sizeof(file), PACKAGE_SYSCONF_DIR"/enlightenment/sysactions.conf");
|
||||||
f = fopen(file, "r");
|
f = fopen(file, "r");
|
||||||
|
@ -147,7 +157,7 @@ auth_etc_enlightenment_sysactions(char *a, char *u, char *g)
|
||||||
deny = 0;
|
deny = 0;
|
||||||
if (!strcmp(id, "user:"))
|
if (!strcmp(id, "user:"))
|
||||||
{
|
{
|
||||||
if (!fnmatch(u, ugname, 0))
|
if (!fnmatch(ugname, u, 0))
|
||||||
{
|
{
|
||||||
if (!strcmp(perm, "allow:")) allow = 1;
|
if (!strcmp(perm, "allow:")) allow = 1;
|
||||||
else if (!strcmp(perm, "deny:")) deny = 1;
|
else if (!strcmp(perm, "deny:")) deny = 1;
|
||||||
|
@ -159,7 +169,7 @@ auth_etc_enlightenment_sysactions(char *a, char *u, char *g)
|
||||||
}
|
}
|
||||||
else if (!strcmp(id, "group:"))
|
else if (!strcmp(id, "group:"))
|
||||||
{
|
{
|
||||||
if (!fnmatch(u, ugname, 0))
|
if (!fnmatch(ugname, g, 0))
|
||||||
{
|
{
|
||||||
if (!strcmp(perm, "allow:")) allow = 1;
|
if (!strcmp(perm, "allow:")) allow = 1;
|
||||||
else if (!strcmp(perm, "deny:")) deny = 1;
|
else if (!strcmp(perm, "deny:")) deny = 1;
|
||||||
|
|
Loading…
Reference in New Issue