summaryrefslogtreecommitdiff
path: root/vendor/android_system_properties
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/android_system_properties
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/android_system_properties')
-rw-r--r--vendor/android_system_properties/.cargo-checksum.json1
-rw-r--r--vendor/android_system_properties/CONTRIBUTING.md40
-rw-r--r--vendor/android_system_properties/Cargo.lock16
-rw-r--r--vendor/android_system_properties/Cargo.toml36
-rw-r--r--vendor/android_system_properties/LICENSE-APACHE13
-rw-r--r--vendor/android_system_properties/LICENSE-MIT20
-rw-r--r--vendor/android_system_properties/README.md36
-rw-r--r--vendor/android_system_properties/examples/time_zone.rs9
-rw-r--r--vendor/android_system_properties/src/lib.rs221
9 files changed, 0 insertions, 392 deletions
diff --git a/vendor/android_system_properties/.cargo-checksum.json b/vendor/android_system_properties/.cargo-checksum.json
deleted file mode 100644
index 1588ce5b..00000000
--- a/vendor/android_system_properties/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CONTRIBUTING.md":"0834cb3b5e092977688d73d219a05bed23ae0ecb54b6d6e5d866ce07f6583b5e","Cargo.lock":"37ffc00dbbbec58fd27b4f4cb597e5402d6cf615ce0458f62a73a7f0d987e5bd","Cargo.toml":"e9e8c037cdef7adc9794b17c13e5a014421524d67ea5048bc09cf70ef13c782c","LICENSE-APACHE":"216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06","LICENSE-MIT":"80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e","README.md":"aba8ff5dbd0712326d97d32bc6a3b66b24d1980a446c238f7e14b96784766cd1","examples/time_zone.rs":"8edb32a946ef2680146ba9ac16c233dd94391ac9f98464e9fb6f87d3954b72a9","src/lib.rs":"0004133d6c3805bf449e7183d2931e9640167511bea6cd12b400805073c4305d"},"package":"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"} \ No newline at end of file
diff --git a/vendor/android_system_properties/CONTRIBUTING.md b/vendor/android_system_properties/CONTRIBUTING.md
deleted file mode 100644
index 62436f59..00000000
--- a/vendor/android_system_properties/CONTRIBUTING.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Contributing
-
-Contributions are very much welcome. Here are the guidelines if you are thinking of helping us:
-
-## Contributions
-
-Contributions should be made in the form of GitHub pull requests.
-Each pull request will be reviewed by a core contributor (someone with
-permission to land patches) and either landed in the main tree or
-given feedback for changes that would be required.
-
-Should you wish to work on an issue, please claim it first by commenting on
-the GitHub issue that you want to work on it. This is to prevent duplicated
-efforts from contributors on the same issue.
-
-## Pull Request Checklist
-
-- Branch from the master branch and, if needed, rebase to the current master
- branch before submitting your pull request. If it doesn't merge cleanly with
- master you may be asked to rebase your changes.
-
-- Commits should be as small as possible, while ensuring that each commit is
- correct independently (i.e., each commit should compile and pass tests).
-
-- If your patch is not getting reviewed or you need a specific person to review
- it, you can @-reply a reviewer asking for a review in the pull request or a
- comment.
-
-- Whenever applicable, add tests relevant to the fixed bug or new feature.
-
-For specific git instructions, see [GitHub workflow 101](https://github.com/servo/servo/wiki/Github-workflow).
-
-## Conduct
-
-We follow the [Rust Code of Conduct](http://www.rust-lang.org/conduct.html).
-For escalation or moderation issues, please contact Nical (nical@fastmail.com) instead of the Rust moderation team.
-
-## License
-
-Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed dual MIT/Apache 2, without any additional terms or conditions.
diff --git a/vendor/android_system_properties/Cargo.lock b/vendor/android_system_properties/Cargo.lock
deleted file mode 100644
index 9ee6e3d2..00000000
--- a/vendor/android_system_properties/Cargo.lock
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.126"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
diff --git a/vendor/android_system_properties/Cargo.toml b/vendor/android_system_properties/Cargo.toml
deleted file mode 100644
index 79e4ea0d..00000000
--- a/vendor/android_system_properties/Cargo.toml
+++ /dev/null
@@ -1,36 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "android_system_properties"
-version = "0.1.5"
-authors = ["Nicolas Silva <nical@fastmail.com>"]
-description = "Minimal Android system properties wrapper"
-homepage = "https://github.com/nical/android_system_properties"
-documentation = "https://docs.rs/android_system_properties"
-readme = "README.md"
-keywords = ["android"]
-license = "MIT/Apache-2.0"
-repository = "https://github.com/nical/android_system_properties"
-
-[package.metadata.docs.rs]
-targets = [
- "arm-linux-androideabi",
- "armv7-linux-androideabi",
- "aarch64-linux-android",
- "i686-linux-android",
- "x86_64-linux-android",
- "x86_64-unknown-linux-gnu",
-]
-
-[dependencies.libc]
-version = "0.2.126"
diff --git a/vendor/android_system_properties/LICENSE-APACHE b/vendor/android_system_properties/LICENSE-APACHE
deleted file mode 100644
index 47f4fd0e..00000000
--- a/vendor/android_system_properties/LICENSE-APACHE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright 2016 Nicolas Silva
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/android_system_properties/LICENSE-MIT b/vendor/android_system_properties/LICENSE-MIT
deleted file mode 100644
index e6d4b179..00000000
--- a/vendor/android_system_properties/LICENSE-MIT
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Nicolas Silva
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/android_system_properties/README.md b/vendor/android_system_properties/README.md
deleted file mode 100644
index 46f6500b..00000000
--- a/vendor/android_system_properties/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# android_system_properties
-
-A thin rust wrapper for Android system properties.
-
-This crate is similar to the `android-properties` crate with the exception that
-the necessary Android libc symbols are loaded dynamically instead of linked
-statically. In practice this means that the same binary will work with old and
-new versions of Android, even though the API for reading system properties changed
-around Android L.
-
-## Example
-
-```rust
-use android_system_properties::AndroidSystemProperties;
-
-let properties = AndroidSystemProperties::new();
-
-if let Some(value) = properties.get("persist.sys.timezone") {
- println!("{}", value);
-}
-```
-
-## Listing and setting properties
-
-For the sake of simplicity this crate currently only contains what's needed by wgpu.
-The implementations for listing and setting properties can be added back if anyone needs
-them (let me know by filing an issue).
-
-## License
-
-Licensed under either of
-
- * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-
-at your option.
diff --git a/vendor/android_system_properties/examples/time_zone.rs b/vendor/android_system_properties/examples/time_zone.rs
deleted file mode 100644
index f3a6a3c7..00000000
--- a/vendor/android_system_properties/examples/time_zone.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-/// Prints the current time zone, e.g. "Europe/Paris".
-
-use android_system_properties::AndroidSystemProperties;
-
-fn main() {
- let android_system_properties = AndroidSystemProperties::new();
- let tz = android_system_properties.get("persist.sys.timezone");
- println!("Your time zone is: {}", tz.as_deref().unwrap_or("<unknown>"));
-}
diff --git a/vendor/android_system_properties/src/lib.rs b/vendor/android_system_properties/src/lib.rs
deleted file mode 100644
index 9cd9d491..00000000
--- a/vendor/android_system_properties/src/lib.rs
+++ /dev/null
@@ -1,221 +0,0 @@
-//! A thin rust wrapper for Android system properties.
-//!
-//! This crate is similar to the `android-properties` crate with the exception that
-//! the necessary Android libc symbols are loaded dynamically instead of linked
-//! statically. In practice this means that the same binary will work with old and
-//! new versions of Android, even though the API for reading system properties changed
-//! around Android L.
-//!
-//! ## Example
-//!
-//! ```rust
-//! use android_system_properties::AndroidSystemProperties;
-//!
-//! let properties = AndroidSystemProperties::new();
-//!
-//! if let Some(value) = properties.get("persist.sys.timezone") {
-//! println!("{}", value);
-//! }
-//! ```
-//!
-//! ## Listing and setting properties
-//!
-//! For the sake of simplicity this crate currently only contains what's needed by wgpu.
-//! The implementations for listing and setting properties can be added back if anyone needs
-//! them (let me know by filing an issue).
-//!
-//! ## License
-//!
-//! Licensed under either of
-//!
-//! * Apache License, Version 2.0 ([LICENSE-APACHE] or <http://www.apache.org/licenses/LICENSE-2.0>)
-//! * MIT license ([LICENSE-MIT] or <http://opensource.org/licenses/MIT>)
-//!
-//! at your option.
-//!
-//! [LICENSE-APACHE]: https://github.com/nical/android_system_properties/blob/804681c5c1c93d4fab29c1a2f47b7d808dc70fd3/LICENSE-APACHE
-//! [LICENSE-MIT]: https://github.com/nical/android_system_properties/blob/804681c5c1c93d4fab29c1a2f47b7d808dc70fd3/LICENSE-MIT
-
-use std::{
- ffi::{CStr, CString},
- os::raw::{c_char, c_int, c_void},
-};
-
-#[cfg(target_os = "android")]
-use std::mem;
-
-unsafe fn property_callback(payload: *mut String, _name: *const c_char, value: *const c_char, _serial: u32) {
- let cvalue = CStr::from_ptr(value);
- (*payload) = cvalue.to_str().unwrap().to_string();
-}
-
-type Callback = unsafe fn(*mut String, *const c_char, *const c_char, u32);
-
-type SystemPropertyGetFn = unsafe extern "C" fn(*const c_char, *mut c_char) -> c_int;
-type SystemPropertyFindFn = unsafe extern "C" fn(*const c_char) -> *const c_void;
-type SystemPropertyReadCallbackFn = unsafe extern "C" fn(*const c_void, Callback, *mut String) -> *const c_void;
-
-#[derive(Debug)]
-/// An object that can retrieve android system properties.
-///
-/// ## Example
-///
-/// ```
-/// use android_system_properties::AndroidSystemProperties;
-///
-/// let properties = AndroidSystemProperties::new();
-///
-/// if let Some(value) = properties.get("persist.sys.timezone") {
-/// println!("{}", value);
-/// }
-/// ```
-pub struct AndroidSystemProperties {
- libc_so: *mut c_void,
- get_fn: Option<SystemPropertyGetFn>,
- find_fn: Option<SystemPropertyFindFn>,
- read_callback_fn: Option<SystemPropertyReadCallbackFn>,
-}
-
-unsafe impl Send for AndroidSystemProperties {}
-unsafe impl Sync for AndroidSystemProperties {}
-
-impl AndroidSystemProperties {
- #[cfg(not(target_os = "android"))]
- /// Create an entry point for accessing Android properties.
- pub fn new() -> Self {
- AndroidSystemProperties {
- libc_so: std::ptr::null_mut(),
- find_fn: None,
- read_callback_fn: None,
- get_fn: None,
- }
- }
-
- #[cfg(target_os = "android")]
- /// Create an entry point for accessing Android properties.
- pub fn new() -> Self {
- let libc_so = unsafe { libc::dlopen(b"libc.so\0".as_ptr().cast(), libc::RTLD_NOLOAD) };
-
- let mut properties = AndroidSystemProperties {
- libc_so,
- find_fn: None,
- read_callback_fn: None,
- get_fn: None,
- };
-
- if libc_so.is_null() {
- return properties;
- }
-
-
- unsafe fn load_fn(libc_so: *mut c_void, name: &[u8]) -> Option<*const c_void> {
- let fn_ptr = libc::dlsym(libc_so, name.as_ptr().cast());
-
- if fn_ptr.is_null() {
- return None;
- }
-
- Some(fn_ptr)
- }
-
- unsafe {
- properties.read_callback_fn = load_fn(libc_so, b"__system_property_read_callback\0")
- .map(|raw| mem::transmute::<*const c_void, SystemPropertyReadCallbackFn>(raw));
-
- properties.find_fn = load_fn(libc_so, b"__system_property_find\0")
- .map(|raw| mem::transmute::<*const c_void, SystemPropertyFindFn>(raw));
-
- // Fallback for old versions of Android.
- if properties.read_callback_fn.is_none() || properties.find_fn.is_none() {
- properties.get_fn = load_fn(libc_so, b"__system_property_get\0")
- .map(|raw| mem::transmute::<*const c_void, SystemPropertyGetFn>(raw));
- }
- }
-
- properties
- }
-
- /// Retrieve a system property.
- ///
- /// Returns None if the operation fails.
- ///
- /// # Example
- ///
- /// ```
- /// # use android_system_properties::AndroidSystemProperties;
- /// let properties = AndroidSystemProperties::new();
- ///
- /// if let Some(value) = properties.get("persist.sys.timezone") {
- /// println!("{}", value);
- /// }
- /// ```
- pub fn get(&self, name: &str) -> Option<String> {
- let cname = CString::new(name).ok()?;
- self.get_from_cstr(&cname)
- }
-
- /// Retrieve a system property using a [`CStr`] key.
- ///
- /// Returns None if the operation fails.
- ///
- /// # Example
- ///
- /// ```
- /// # use android_system_properties::AndroidSystemProperties;
- /// # use std::ffi::CStr;
- /// let properties = AndroidSystemProperties::new();
- ///
- /// let key = unsafe { CStr::from_bytes_with_nul_unchecked(b"persist.sys.timezone\0") };
- /// if let Some(value) = properties.get_from_cstr(key) {
- /// println!("{}", value);
- /// }
- /// ```
- pub fn get_from_cstr(&self, cname: &std::ffi::CStr) -> Option<String> {
- // If available, use the recommended approach to accessing properties (Android L and onward).
- if let (Some(find_fn), Some(read_callback_fn)) = (self.find_fn, self.read_callback_fn) {
- let info = unsafe { (find_fn)(cname.as_ptr()) };
-
- if info.is_null() {
- return None;
- }
-
- let mut result = String::new();
-
- unsafe {
- (read_callback_fn)(info, property_callback, &mut result);
- }
-
- return Some(result);
- }
-
- // Fall back to the older approach.
- if let Some(get_fn) = self.get_fn {
- // The constant is PROP_VALUE_MAX in Android's libc/include/sys/system_properties.h
- const PROPERTY_VALUE_MAX: usize = 92;
- let mut buffer: Vec<u8> = Vec::with_capacity(PROPERTY_VALUE_MAX);
- let raw = buffer.as_mut_ptr() as *mut c_char;
-
- let len = unsafe { (get_fn)(cname.as_ptr(), raw) };
-
- if len > 0 {
- assert!(len as usize <= buffer.capacity());
- unsafe { buffer.set_len(len as usize); }
- String::from_utf8(buffer).ok()
- } else {
- None
- }
- } else {
- None
- }
- }
-}
-
-impl Drop for AndroidSystemProperties {
- fn drop(&mut self) {
- if !self.libc_so.is_null() {
- unsafe {
- libc::dlclose(self.libc_so);
- }
- }
- }
-}