am 3328e3bc: Revert "Update OTA installer to understand SELinux filesystem labels"
* commit '3328e3bc81161c2a57ea94d304162276facdd826': Revert "Update OTA installer to understand SELinux filesystem labels"
This commit is contained in:
@@ -23,7 +23,6 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <selinux/selinux.h>
|
|
||||||
|
|
||||||
#include "DirUtil.h"
|
#include "DirUtil.h"
|
||||||
|
|
||||||
@@ -238,7 +237,7 @@ dirUnlinkHierarchy(const char *path)
|
|||||||
|
|
||||||
int
|
int
|
||||||
dirSetHierarchyPermissions(const char *path,
|
dirSetHierarchyPermissions(const char *path,
|
||||||
int uid, int gid, int dirMode, int fileMode, const char* secontext)
|
int uid, int gid, int dirMode, int fileMode)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
if (lstat(path, &st)) {
|
if (lstat(path, &st)) {
|
||||||
@@ -256,10 +255,6 @@ dirSetHierarchyPermissions(const char *path,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((secontext != NULL) && lsetfilecon(path, secontext) && (errno != ENOTSUP)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* recurse over directory components */
|
/* recurse over directory components */
|
||||||
if (S_ISDIR(st.st_mode)) {
|
if (S_ISDIR(st.st_mode)) {
|
||||||
DIR *dir = opendir(path);
|
DIR *dir = opendir(path);
|
||||||
@@ -276,7 +271,7 @@ dirSetHierarchyPermissions(const char *path,
|
|||||||
|
|
||||||
char dn[PATH_MAX];
|
char dn[PATH_MAX];
|
||||||
snprintf(dn, sizeof(dn), "%s/%s", path, de->d_name);
|
snprintf(dn, sizeof(dn), "%s/%s", path, de->d_name);
|
||||||
if (!dirSetHierarchyPermissions(dn, uid, gid, dirMode, fileMode, secontext)) {
|
if (!dirSetHierarchyPermissions(dn, uid, gid, dirMode, fileMode)) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
} else if (errno == 0) {
|
} else if (errno == 0) {
|
||||||
errno = -1;
|
errno = -1;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ int dirUnlinkHierarchy(const char *path);
|
|||||||
* Sets directories to <dirMode> and files to <fileMode>. Skips symlinks.
|
* Sets directories to <dirMode> and files to <fileMode>. Skips symlinks.
|
||||||
*/
|
*/
|
||||||
int dirSetHierarchyPermissions(const char *path,
|
int dirSetHierarchyPermissions(const char *path,
|
||||||
int uid, int gid, int dirMode, int fileMode, const char* secontext);
|
int uid, int gid, int dirMode, int fileMode);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <selinux/selinux.h>
|
|
||||||
|
|
||||||
#include "cutils/misc.h"
|
#include "cutils/misc.h"
|
||||||
#include "cutils/properties.h"
|
#include "cutils/properties.h"
|
||||||
@@ -522,10 +521,9 @@ Value* SymlinkFn(const char* name, State* state, int argc, Expr* argv[]) {
|
|||||||
|
|
||||||
Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||||
char* result = NULL;
|
char* result = NULL;
|
||||||
bool recursive = (strcmp(name, "set_perm_recursive") == 0) || (strcmp(name, "set_perm2_recursive") == 0);
|
bool recursive = (strcmp(name, "set_perm_recursive") == 0);
|
||||||
bool has_selabel = (strcmp(name, "set_perm2") == 0) || (strcmp(name, "set_perm2_recursive") == 0);
|
|
||||||
|
|
||||||
int min_args = 4 + (has_selabel ? 1 : 0) + (recursive ? 1 : 0);
|
int min_args = 4 + (recursive ? 1 : 0);
|
||||||
if (argc < min_args) {
|
if (argc < min_args) {
|
||||||
return ErrorAbort(state, "%s() expects %d+ args, got %d",
|
return ErrorAbort(state, "%s() expects %d+ args, got %d",
|
||||||
name, min_args, argc);
|
name, min_args, argc);
|
||||||
@@ -564,13 +562,8 @@ Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* secontext = NULL;
|
for (i = 4; i < argc; ++i) {
|
||||||
if (has_selabel) {
|
dirSetHierarchyPermissions(args[i], uid, gid, dir_mode, file_mode);
|
||||||
secontext = args[4];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 4 + (has_selabel ? 1 : 0); i < argc; ++i) {
|
|
||||||
dirSetHierarchyPermissions(args[i], uid, gid, dir_mode, file_mode, secontext);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int mode = strtoul(args[2], &end, 0);
|
int mode = strtoul(args[2], &end, 0);
|
||||||
@@ -579,12 +572,7 @@ Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* secontext = NULL;
|
for (i = 3; i < argc; ++i) {
|
||||||
if (has_selabel) {
|
|
||||||
secontext = args[3];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 3 + (has_selabel ? 1 : 0); i < argc; ++i) {
|
|
||||||
if (chown(args[i], uid, gid) < 0) {
|
if (chown(args[i], uid, gid) < 0) {
|
||||||
printf("%s: chown of %s to %d %d failed: %s\n",
|
printf("%s: chown of %s to %d %d failed: %s\n",
|
||||||
name, args[i], uid, gid, strerror(errno));
|
name, args[i], uid, gid, strerror(errno));
|
||||||
@@ -595,11 +583,6 @@ Value* SetPermFn(const char* name, State* state, int argc, Expr* argv[]) {
|
|||||||
name, args[i], mode, strerror(errno));
|
name, args[i], mode, strerror(errno));
|
||||||
++bad;
|
++bad;
|
||||||
}
|
}
|
||||||
if (has_selabel && lsetfilecon(args[i], secontext) && (errno != ENOTSUP)) {
|
|
||||||
printf("%s: lsetfilecon of %s to %s failed: %s\n",
|
|
||||||
name, args[i], secontext, strerror(errno));
|
|
||||||
++bad;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result = strdup("");
|
result = strdup("");
|
||||||
@@ -1152,8 +1135,6 @@ void RegisterInstallFunctions() {
|
|||||||
RegisterFunction("symlink", SymlinkFn);
|
RegisterFunction("symlink", SymlinkFn);
|
||||||
RegisterFunction("set_perm", SetPermFn);
|
RegisterFunction("set_perm", SetPermFn);
|
||||||
RegisterFunction("set_perm_recursive", SetPermFn);
|
RegisterFunction("set_perm_recursive", SetPermFn);
|
||||||
RegisterFunction("set_perm2", SetPermFn);
|
|
||||||
RegisterFunction("set_perm2_recursive", SetPermFn);
|
|
||||||
|
|
||||||
RegisterFunction("getprop", GetPropFn);
|
RegisterFunction("getprop", GetPropFn);
|
||||||
RegisterFunction("file_getprop", FileGetPropFn);
|
RegisterFunction("file_getprop", FileGetPropFn);
|
||||||
|
|||||||
Reference in New Issue
Block a user