Merge "Drop unusable SELinux APIs."
This commit is contained in:
@@ -49,13 +49,6 @@ public class SELinux {
|
||||
*/
|
||||
public static final native boolean isSELinuxEnforced();
|
||||
|
||||
/**
|
||||
* Set whether SELinux is permissive or enforcing.
|
||||
* @param value representing whether to set SELinux to enforcing
|
||||
* @return a boolean representing whether the desired mode was set
|
||||
*/
|
||||
public static final native boolean setSELinuxEnforce(boolean value);
|
||||
|
||||
/**
|
||||
* Sets the security context for newly created file objects.
|
||||
* @param context a security context given as a String.
|
||||
@@ -98,27 +91,6 @@ public class SELinux {
|
||||
*/
|
||||
public static final native String getPidContext(int pid);
|
||||
|
||||
/**
|
||||
* Gets a list of the SELinux boolean names.
|
||||
* @return an array of strings containing the SELinux boolean names.
|
||||
*/
|
||||
public static final native String[] getBooleanNames();
|
||||
|
||||
/**
|
||||
* Gets the value for the given SELinux boolean name.
|
||||
* @param name The name of the SELinux boolean.
|
||||
* @return a boolean indicating whether the SELinux boolean is set.
|
||||
*/
|
||||
public static final native boolean getBooleanValue(String name);
|
||||
|
||||
/**
|
||||
* Sets the value for the given SELinux boolean name.
|
||||
* @param name The name of the SELinux boolean.
|
||||
* @param value The new value of the SELinux boolean.
|
||||
* @return a boolean indicating whether or not the operation succeeded.
|
||||
*/
|
||||
public static final native boolean setBooleanValue(String name, boolean value);
|
||||
|
||||
/**
|
||||
* Check permissions between two security contexts.
|
||||
* @param scon The source or subject security context.
|
||||
|
||||
@@ -60,23 +60,6 @@ static jboolean isSELinuxEnforced(JNIEnv *env, jobject) {
|
||||
return (security_getenforce() == 1) ? true : false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: setSELinuxEnforce
|
||||
* Purpose: set the SE Linux enforcing mode
|
||||
* Parameters: true (enforcing) or false (permissive)
|
||||
* Return value: true (success) or false (fail)
|
||||
* Exceptions: none
|
||||
*/
|
||||
static jboolean setSELinuxEnforce(JNIEnv *env, jobject, jboolean value) {
|
||||
if (isSELinuxDisabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int enforce = value ? 1 : 0;
|
||||
|
||||
return (security_setenforce(enforce) != -1) ? true : false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: getPeerCon
|
||||
* Purpose: retrieves security context of peer socket
|
||||
@@ -264,92 +247,6 @@ static jstring getPidCon(JNIEnv *env, jobject, jint pid) {
|
||||
return securityString.release();
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: getBooleanNames
|
||||
* Purpose: Gets a list of the SELinux boolean names.
|
||||
* Parameters: None
|
||||
* Returns: an array of strings containing the SELinux boolean names.
|
||||
* returns NULL string on error
|
||||
* Exceptions: None
|
||||
*/
|
||||
static jobjectArray getBooleanNames(JNIEnv *env, JNIEnv) {
|
||||
if (isSELinuxDisabled) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char **list;
|
||||
int len;
|
||||
if (security_get_boolean_names(&list, &len) == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jclass stringClass = env->FindClass("java/lang/String");
|
||||
jobjectArray stringArray = env->NewObjectArray(len, stringClass, NULL);
|
||||
for (int i = 0; i < len; i++) {
|
||||
ScopedLocalRef<jstring> obj(env, env->NewStringUTF(list[i]));
|
||||
env->SetObjectArrayElement(stringArray, i, obj.get());
|
||||
free(list[i]);
|
||||
}
|
||||
free(list);
|
||||
|
||||
return stringArray;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: getBooleanValue
|
||||
* Purpose: Gets the value for the given SELinux boolean name.
|
||||
* Parameters:
|
||||
* String: The name of the SELinux boolean.
|
||||
* Returns: a boolean: (true) boolean is set or (false) it is not.
|
||||
* Exceptions: None
|
||||
*/
|
||||
static jboolean getBooleanValue(JNIEnv *env, jobject, jstring nameStr) {
|
||||
if (isSELinuxDisabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nameStr == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ScopedUtfChars name(env, nameStr);
|
||||
int ret = security_get_boolean_active(name.c_str());
|
||||
|
||||
ALOGV("getBooleanValue(%s) => %d", name.c_str(), ret);
|
||||
return (ret == 1) ? true : false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: setBooleanNames
|
||||
* Purpose: Sets the value for the given SELinux boolean name.
|
||||
* Parameters:
|
||||
* String: The name of the SELinux boolean.
|
||||
* Boolean: The new value of the SELinux boolean.
|
||||
* Returns: a boolean indicating whether or not the operation succeeded.
|
||||
* Exceptions: None
|
||||
*/
|
||||
static jboolean setBooleanValue(JNIEnv *env, jobject, jstring nameStr, jboolean value) {
|
||||
if (isSELinuxDisabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nameStr == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ScopedUtfChars name(env, nameStr);
|
||||
int ret = security_set_boolean(name.c_str(), value ? 1 : 0);
|
||||
if (ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (security_commit_booleans() == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: checkSELinuxAccess
|
||||
* Purpose: Check permissions between two security contexts.
|
||||
@@ -426,8 +323,6 @@ static jboolean native_restorecon(JNIEnv *env, jobject, jstring pathnameStr, jin
|
||||
static JNINativeMethod method_table[] = {
|
||||
/* name, signature, funcPtr */
|
||||
{ "checkSELinuxAccess" , "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z" , (void*)checkSELinuxAccess },
|
||||
{ "getBooleanNames" , "()[Ljava/lang/String;" , (void*)getBooleanNames },
|
||||
{ "getBooleanValue" , "(Ljava/lang/String;)Z" , (void*)getBooleanValue },
|
||||
{ "getContext" , "()Ljava/lang/String;" , (void*)getCon },
|
||||
{ "getFileContext" , "(Ljava/lang/String;)Ljava/lang/String;" , (void*)getFileCon },
|
||||
{ "getPeerContext" , "(Ljava/io/FileDescriptor;)Ljava/lang/String;" , (void*)getPeerCon },
|
||||
@@ -435,10 +330,8 @@ static JNINativeMethod method_table[] = {
|
||||
{ "isSELinuxEnforced" , "()Z" , (void*)isSELinuxEnforced},
|
||||
{ "isSELinuxEnabled" , "()Z" , (void*)isSELinuxEnabled },
|
||||
{ "native_restorecon" , "(Ljava/lang/String;I)Z" , (void*)native_restorecon},
|
||||
{ "setBooleanValue" , "(Ljava/lang/String;Z)Z" , (void*)setBooleanValue },
|
||||
{ "setFileContext" , "(Ljava/lang/String;Ljava/lang/String;)Z" , (void*)setFileCon },
|
||||
{ "setFSCreateContext" , "(Ljava/lang/String;)Z" , (void*)setFSCreateCon },
|
||||
{ "setSELinuxEnforce" , "(Z)Z" , (void*)setSELinuxEnforce},
|
||||
};
|
||||
|
||||
static int log_callback(int type, const char *fmt, ...) {
|
||||
|
||||
Reference in New Issue
Block a user