diff options
author | Nick Kralevich <nnk@google.com> | 2013-01-23 09:24:33 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2013-06-19 12:26:28 -0700 |
commit | 26f2d2f51941dda585009ae5cbd6f2ae1926ab2d (patch) | |
tree | 0beb2295f4eb8a641abb74df4911bd08af78d2a1 /init/property_service.c | |
parent | e755dfd43812ebd9a0d0d6a2106316f343ffb5a2 (diff) | |
download | system_core-26f2d2f51941dda585009ae5cbd6f2ae1926ab2d.zip system_core-26f2d2f51941dda585009ae5cbd6f2ae1926ab2d.tar.gz system_core-26f2d2f51941dda585009ae5cbd6f2ae1926ab2d.tar.bz2 |
property_service: make /dev/__properties__ readable
Currently, system properties are passed via the environment
variable ANDROID_PROPERTY_WORKSPACE and a file descriptor passed
from parent to child. This is insecure for setuid executables,
as the environment variable can be changed by the caller.
Make the /dev/__properties__ file accessible, so an app can
get properties directly from the file, rather than relying on
environment variables.
Preserve the environment variable for compatibility with pre-existing
apps.
Bug: 8045561
(cherry picked from commit 7ece0a862cf97e85bbe69458a32a2bd165456874)
Change-Id: I762da21ef4075f288745efed0ec7d16c2b71303c
Diffstat (limited to 'init/property_service.c')
-rwxr-xr-x | init/property_service.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/init/property_service.c b/init/property_service.c index 86e35f1..c682809 100755 --- a/init/property_service.c +++ b/init/property_service.c @@ -123,7 +123,7 @@ static int init_workspace(workspace *w, size_t size) /* dev is a tmpfs that we can use to carve a shared workspace * out of, so let's do that... */ - fd = open("/dev/__properties__", O_RDWR | O_CREAT | O_NOFOLLOW, 0600); + fd = open(PROP_FILENAME, O_RDWR | O_CREAT | O_NOFOLLOW, 0644); if (fd < 0) return -1; @@ -136,12 +136,10 @@ static int init_workspace(workspace *w, size_t size) close(fd); - fd = open("/dev/__properties__", O_RDONLY | O_NOFOLLOW); + fd = open(PROP_FILENAME, O_RDONLY | O_NOFOLLOW); if (fd < 0) return -1; - unlink("/dev/__properties__"); - w->data = data; w->size = size; w->fd = fd; |