diff options
author | Scott Mertz <scott@cyngn.com> | 2016-01-22 14:36:19 -0800 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2016-01-22 16:24:33 -0800 |
commit | 62579b157a591b6aa464b28a5cabbffa2c190d8b (patch) | |
tree | 26ea94d6cc7c7e1e460ea3c1880234cc76ad2890 /cm | |
parent | fc50f7cef8f55d7589a30ea7e88c1b59f70b0b05 (diff) | |
download | vendor_cmsdk-62579b157a591b6aa464b28a5cabbffa2c190d8b.zip vendor_cmsdk-62579b157a591b6aa464b28a5cabbffa2c190d8b.tar.gz vendor_cmsdk-62579b157a591b6aa464b28a5cabbffa2c190d8b.tar.bz2 |
cmsdk: add invalid input checking for persistent storage APIs
Some of this exists in the PersistentStorage implementation, but it
was never formally documented in the APIs. Inherit the cmhw implementation
error checking & move it into the service.
Add tests to validate the new restrictions & a test that was previously
failing.
Change-Id: I3ecda29fdd28bbc4e6d8ccce7511c4644065ea46
Diffstat (limited to 'cm')
-rw-r--r-- | cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java index 9c3eed0..05ee6c7 100644 --- a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java +++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java @@ -32,6 +32,7 @@ import cyanogenmod.hardware.IThermalListenerCallback; import cyanogenmod.hardware.ThermalListenerCallback; import java.io.File; +import java.util.Arrays; import org.cyanogenmod.hardware.AdaptiveBacklight; import org.cyanogenmod.hardware.AutoContrast; @@ -592,6 +593,15 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal public boolean writePersistentBytes(String key, byte[] value) { mContext.enforceCallingOrSelfPermission( cyanogenmod.platform.Manifest.permission.MANAGE_PERSISTENT_STORAGE, null); + if (key == null || key.length() == 0 || key.length() > 64) { + Log.e(TAG, "Invalid key: " + key); + return false; + } + // A null value is delete + if (value != null && (value.length > 4096 || value.length == 0)) { + Log.e(TAG, "Invalid value: " + (value != null ? Arrays.toString(value) : null)); + return false; + } if (!isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE)) { Log.e(TAG, "Persistent storage is not supported"); return false; @@ -603,6 +613,10 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal public byte[] readPersistentBytes(String key) { mContext.enforceCallingOrSelfPermission( cyanogenmod.platform.Manifest.permission.MANAGE_PERSISTENT_STORAGE, null); + if (key == null || key.length() == 0 || key.length() > 64) { + Log.e(TAG, "Invalid key: " + key); + return null; + } if (!isSupported(CMHardwareManager.FEATURE_PERSISTENT_STORAGE)) { Log.e(TAG, "Persistent storage is not supported"); return null; |