release-request-c7ef57d3-badc-414a-a047-fc71124a9598-for-git_oc-mr1-iot-release-4343992 snap-temp-L17700000103593829

Change-Id: I8e9a3bef62ea563169cc7049e5f6db57e460cb09
diff --git a/libselinux/Android.bp b/libselinux/Android.bp
index 65607d1..3e881c2 100644
--- a/libselinux/Android.bp
+++ b/libselinux/Android.bp
@@ -87,6 +87,12 @@
         }
     },
 
+    product_variables: {
+        treble: {
+            cflags: ["-DFULL_TREBLE"],
+        },
+    },
+
     local_include_dirs: ["include"],
     export_include_dirs: ["include"],
 }
diff --git a/libselinux/src/android/android.c b/libselinux/src/android/android.c
index 391fc1b..b79b463 100644
--- a/libselinux/src/android/android.c
+++ b/libselinux/src/android/android.c
@@ -63,8 +63,12 @@
         seopts_service = seopts_service_rootfs;
     }
 
-    // TODO(b/36866029) full treble devices can't load non-plat
+#ifdef FULL_TREBLE
+    // Treble compliant devices can only serve plat_service_contexts from servicemanager
+    return selinux_android_service_open_context_handle(seopts_service, 1);
+#else
     return selinux_android_service_open_context_handle(seopts_service, 2);
+#endif
 }
 
 struct selabel_handle* selinux_android_hw_service_context_handle(void)