Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4c5200f authored by Stephen Smalley's avatar Stephen Smalley
Browse files

Extend ueventd to use the label-by-symlink support in libselinux.



When ueventd creates a device node, it may also create one or more
symlinks to the device node.  These symlinks may be the only stable
name for the device, e.g. if the partition is dynamically assigned.
A corresponding change with the same Change-Id to external/libselinux
introduces selabel_lookup_best_match() to support looking up the "best match"
for a device node based on its real path (key) and any links to it
(aliases).  This change updates ueventd to use this new interface
to find the best match for the device node when creating it.

Change-Id: Id6c2597eee2b6723a5089dcf7c450f8d0a4128f4
Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
parent 7fa1cd19
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -196,7 +196,8 @@ static mode_t get_device_perm(const char *path, unsigned *uid, unsigned *gid)

static void make_device(const char *path,
                        const char *upath UNUSED,
                        int block, int major, int minor)
                        int block, int major, int minor,
                        const char **links)
{
    unsigned uid;
    unsigned gid;
@@ -207,7 +208,7 @@ static void make_device(const char *path,
    mode = get_device_perm(path, &uid, &gid) | (block ? S_IFBLK : S_IFCHR);

    if (sehandle) {
        selabel_lookup(sehandle, &secontext, path, mode);
        selabel_lookup_best_match(sehandle, &secontext, path, links, mode);
        setfscreatecon(secontext);
    }

@@ -523,7 +524,7 @@ static void handle_device(const char *action, const char *devpath,
    int i;

    if(!strcmp(action, "add")) {
        make_device(devpath, path, block, major, minor);
        make_device(devpath, path, block, major, minor, (const char **)links);
        if (links) {
            for (i = 0; links[i]; i++)
                make_link(devpath, links[i]);