diff options
author | Sudheer Shanka <sudheersai@google.com> | 2020-06-26 15:02:04 -0700 |
---|---|---|
committer | Sudheer Shanka <sudheersai@google.com> | 2020-06-29 10:36:38 -0700 |
commit | 94b852f9a6ba2fd87d7ab9c818935ae19d500698 (patch) | |
tree | 9b6414a53f86c2dc46dad27c2149dee717d0c84c /apex/blobstore/service | |
parent | aeb6e127806c33f8a8979ecf39ed8ac58eced513 (diff) |
Add limits on BlobHandle label and lease expiry strings.
Fixes: 157221032
Test: atest --test-mapping apex/blobstore
Change-Id: Ic8eac1d956b60fbcd171c2705d5a151c7d5baf87
Diffstat (limited to 'apex/blobstore/service')
-rw-r--r-- | apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java | 26 | ||||
-rw-r--r-- | apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java | 2 |
2 files changed, 28 insertions, 0 deletions
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java index 79cd1b17a5b5..bb9f13f1712c 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java @@ -25,6 +25,7 @@ import android.content.Context; import android.os.Environment; import android.provider.DeviceConfig; import android.provider.DeviceConfig.Properties; +import android.text.TextUtils; import android.util.DataUnit; import android.util.Log; import android.util.Slog; @@ -171,6 +172,13 @@ class BlobStoreConfig { public static int MAX_BLOB_ACCESS_PERMITTED_PACKAGES = DEFAULT_MAX_BLOB_ACCESS_PERMITTED_PACKAGES; + /** + * Denotes the maximum number of characters that a lease description can have. + */ + public static final String KEY_LEASE_DESC_CHAR_LIMIT = "lease_desc_char_limit"; + public static int DEFAULT_LEASE_DESC_CHAR_LIMIT = 300; + public static int LEASE_DESC_CHAR_LIMIT = DEFAULT_LEASE_DESC_CHAR_LIMIT; + static void refresh(Properties properties) { if (!NAMESPACE_BLOBSTORE.equals(properties.getNamespace())) { return; @@ -221,6 +229,10 @@ class BlobStoreConfig { MAX_BLOB_ACCESS_PERMITTED_PACKAGES = properties.getInt(key, DEFAULT_MAX_BLOB_ACCESS_PERMITTED_PACKAGES); break; + case KEY_LEASE_DESC_CHAR_LIMIT: + LEASE_DESC_CHAR_LIMIT = properties.getInt(key, + DEFAULT_LEASE_DESC_CHAR_LIMIT); + break; default: Slog.wtf(TAG, "Unknown key in device config properties: " + key); } @@ -262,6 +274,8 @@ class BlobStoreConfig { fout.println(String.format(dumpFormat, KEY_MAX_BLOB_ACCESS_PERMITTED_PACKAGES, MAX_BLOB_ACCESS_PERMITTED_PACKAGES, DEFAULT_MAX_BLOB_ACCESS_PERMITTED_PACKAGES)); + fout.println(String.format(dumpFormat, KEY_LEASE_DESC_CHAR_LIMIT, + LEASE_DESC_CHAR_LIMIT, DEFAULT_LEASE_DESC_CHAR_LIMIT)); } } @@ -368,6 +382,18 @@ class BlobStoreConfig { return DeviceConfigProperties.MAX_BLOB_ACCESS_PERMITTED_PACKAGES; } + /** + * Returns the lease description truncated to + * {@link DeviceConfigProperties#LEASE_DESC_CHAR_LIMIT} characters. + */ + public static CharSequence getTruncatedLeaseDescription(CharSequence description) { + if (TextUtils.isEmpty(description)) { + return description; + } + return TextUtils.trimToLengthWithEllipsis(description, + DeviceConfigProperties.LEASE_DESC_CHAR_LIMIT); + } + @Nullable public static File prepareBlobFile(long sessionId) { final File blobsDir = prepareBlobsDir(); diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java index d9c0e478f1e3..75070be2df9e 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java @@ -1494,6 +1494,8 @@ public class BlobStoreManagerService extends SystemService { "leaseExpiryTimeMillis must not be negative"); Objects.requireNonNull(packageName, "packageName must not be null"); + description = BlobStoreConfig.getTruncatedLeaseDescription(description); + final int callingUid = Binder.getCallingUid(); verifyCallingPackage(callingUid, packageName); |