Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions jni/Application.mk
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
APP_ABI := armeabi armeabi-v7a arm64-v8a mips mips64 x86 x86_64
APP_PLATFORM := android-16
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_PLATFORM := android-21
1 change: 1 addition & 0 deletions jni/libapol/render.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include <config.h>

#include <unistd.h>
#include <apol/context-query.h>
#include <apol/policy.h>
#include <apol/render.h>
Expand Down
2 changes: 2 additions & 0 deletions jni/libapol/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#define APOL_LINE_SZ 8192
#define APOL_ENVIRON_VAR_NAME "APOL_INSTALL_DIR"

#ifndef __BIONIC__
void swab(const void *from, void *to, ssize_t n)
{
uint16_t *tmp = (uint16_t *)to;
Expand All @@ -59,6 +60,7 @@ void swab(const void *from, void *to, ssize_t n)
tmp[i] = bswap_16(((uint16_t *)from)[i]);
}
}
#endif

const char *libapol_get_version(void)
{
Expand Down
1 change: 1 addition & 0 deletions jni/libsepol/include/sepol/policydb/avtab.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ typedef struct avtab_extended_perms {

#define AVTAB_XPERMS_IOCTLFUNCTION 0x01
#define AVTAB_XPERMS_IOCTLDRIVER 0x02
#define AVTAB_XPERMS_NLMSG 0x03
/* extension of the avtab_key specified */
uint8_t specified;
uint8_t driver;
Expand Down
9 changes: 6 additions & 3 deletions jni/libsepol/src/avtab.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,12 +423,14 @@ static uint16_t spec_order[] = {
AVTAB_ALLOWED,
AVTAB_AUDITDENY,
AVTAB_AUDITALLOW,
AVTAB_NEVERALLOW,
AVTAB_TRANSITION,
AVTAB_CHANGE,
AVTAB_MEMBER,
AVTAB_XPERMS_ALLOWED,
AVTAB_XPERMS_AUDITALLOW,
AVTAB_XPERMS_DONTAUDIT
AVTAB_XPERMS_DONTAUDIT,
AVTAB_XPERMS_NEVERALLOW
};

int avtab_read_item(struct policy_file *fp, uint32_t vers, avtab_t * a,
Expand Down Expand Up @@ -549,11 +551,11 @@ int avtab_read_item(struct policy_file *fp, uint32_t vers, avtab_t * a,
}

if ((vers < POLICYDB_VERSION_XPERMS_IOCTL) &&
(key.specified & AVTAB_XPERMS)) {
(key.specified & (AVTAB_XPERMS | AVTAB_XPERMS_NEVERALLOW))) {
ERR(fp->handle, "policy version %u does not support extended "
"permissions rules and one was specified\n", vers);
return -1;
} else if (key.specified & AVTAB_XPERMS) {
} else if (key.specified & (AVTAB_XPERMS | AVTAB_XPERMS_NEVERALLOW)) {
rc = next_entry(&buf8, fp, sizeof(uint8_t));
if (rc < 0) {
ERR(fp->handle, "truncated entry");
Expand All @@ -563,6 +565,7 @@ int avtab_read_item(struct policy_file *fp, uint32_t vers, avtab_t * a,
if (avtab_android_m_compat ||
((xperms.specified != AVTAB_XPERMS_IOCTLFUNCTION) &&
(xperms.specified != AVTAB_XPERMS_IOCTLDRIVER) &&
(xperms.specified != AVTAB_XPERMS_NLMSG) &&
(vers == POLICYDB_VERSION_XPERMS_IOCTL))) {
xperms.driver = xperms.specified;
if (android_m_compat_optype)
Expand Down