Loading apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java +28 −0 Original line number Diff line number Diff line Loading @@ -32,11 +32,13 @@ import android.os.RemoteCallback; import android.os.RemoteException; import android.os.UserHandle; import com.android.internal.util.Preconditions; import com.android.internal.util.function.pooled.PooledLambda; import java.io.Closeable; import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; Loading Loading @@ -153,6 +155,26 @@ public class BlobStoreManager { private final Context mContext; private final IBlobStoreManager mService; // TODO: b/404309424 - Make these constants available using a test-api to avoid hardcoding // them in tests. /** * The maximum allowed length for the package name, provided using * {@link BlobStoreManager.Session#allowPackageAccess(String, byte[])}. * * This is the same limit that is already used for limiting the length of the package names * at android.content.pm.parsing.FrameworkParsingPackageUtils#MAX_FILE_NAME_SIZE. * * @hide */ public static final int MAX_PACKAGE_NAME_LENGTH = 223; /** * The maximum allowed length for the certificate, provided using * {@link BlobStoreManager.Session#allowPackageAccess(String, byte[])}. * * @hide */ public static final int MAX_CERTIFICATE_LENGTH = 32; /** @hide */ public BlobStoreManager(@NonNull Context context, @NonNull IBlobStoreManager service) { mContext = context; Loading Loading @@ -786,6 +808,12 @@ public class BlobStoreManager { */ public void allowPackageAccess(@NonNull String packageName, @NonNull byte[] certificate) throws IOException { Objects.requireNonNull(packageName); Preconditions.checkArgument(packageName.length() <= MAX_PACKAGE_NAME_LENGTH, "packageName is longer than " + MAX_PACKAGE_NAME_LENGTH + " chars"); Objects.requireNonNull(certificate); Preconditions.checkArgument(certificate.length <= MAX_CERTIFICATE_LENGTH, "certificate is longer than " + MAX_CERTIFICATE_LENGTH + " chars"); try { mSession.allowPackageAccess(packageName, certificate); } catch (ParcelableException e) { Loading apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.blob; import static android.app.blob.BlobStoreManager.COMMIT_RESULT_ERROR; import static android.app.blob.BlobStoreManager.MAX_CERTIFICATE_LENGTH; import static android.app.blob.BlobStoreManager.MAX_PACKAGE_NAME_LENGTH; import static android.app.blob.XmlTags.ATTR_CREATION_TIME_MS; import static android.app.blob.XmlTags.ATTR_ID; import static android.app.blob.XmlTags.ATTR_PACKAGE; Loading Loading @@ -328,6 +330,11 @@ class BlobStoreSession extends IBlobStoreSession.Stub { @NonNull byte[] certificate) { assertCallerIsOwner(); Objects.requireNonNull(packageName, "packageName must not be null"); Preconditions.checkArgument(packageName.length() <= MAX_PACKAGE_NAME_LENGTH, "packageName is longer than " + MAX_PACKAGE_NAME_LENGTH + " chars"); Objects.requireNonNull(certificate, "certificate must not be null"); Preconditions.checkArgument(certificate.length <= MAX_CERTIFICATE_LENGTH, "certificate is longer than " + MAX_CERTIFICATE_LENGTH + " chars"); synchronized (mSessionLock) { if (mState != STATE_OPENED) { throw new IllegalStateException("Not allowed to change access type in state: " Loading Loading
apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java +28 −0 Original line number Diff line number Diff line Loading @@ -32,11 +32,13 @@ import android.os.RemoteCallback; import android.os.RemoteException; import android.os.UserHandle; import com.android.internal.util.Preconditions; import com.android.internal.util.function.pooled.PooledLambda; import java.io.Closeable; import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; Loading Loading @@ -153,6 +155,26 @@ public class BlobStoreManager { private final Context mContext; private final IBlobStoreManager mService; // TODO: b/404309424 - Make these constants available using a test-api to avoid hardcoding // them in tests. /** * The maximum allowed length for the package name, provided using * {@link BlobStoreManager.Session#allowPackageAccess(String, byte[])}. * * This is the same limit that is already used for limiting the length of the package names * at android.content.pm.parsing.FrameworkParsingPackageUtils#MAX_FILE_NAME_SIZE. * * @hide */ public static final int MAX_PACKAGE_NAME_LENGTH = 223; /** * The maximum allowed length for the certificate, provided using * {@link BlobStoreManager.Session#allowPackageAccess(String, byte[])}. * * @hide */ public static final int MAX_CERTIFICATE_LENGTH = 32; /** @hide */ public BlobStoreManager(@NonNull Context context, @NonNull IBlobStoreManager service) { mContext = context; Loading Loading @@ -786,6 +808,12 @@ public class BlobStoreManager { */ public void allowPackageAccess(@NonNull String packageName, @NonNull byte[] certificate) throws IOException { Objects.requireNonNull(packageName); Preconditions.checkArgument(packageName.length() <= MAX_PACKAGE_NAME_LENGTH, "packageName is longer than " + MAX_PACKAGE_NAME_LENGTH + " chars"); Objects.requireNonNull(certificate); Preconditions.checkArgument(certificate.length <= MAX_CERTIFICATE_LENGTH, "certificate is longer than " + MAX_CERTIFICATE_LENGTH + " chars"); try { mSession.allowPackageAccess(packageName, certificate); } catch (ParcelableException e) { Loading
apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.blob; import static android.app.blob.BlobStoreManager.COMMIT_RESULT_ERROR; import static android.app.blob.BlobStoreManager.MAX_CERTIFICATE_LENGTH; import static android.app.blob.BlobStoreManager.MAX_PACKAGE_NAME_LENGTH; import static android.app.blob.XmlTags.ATTR_CREATION_TIME_MS; import static android.app.blob.XmlTags.ATTR_ID; import static android.app.blob.XmlTags.ATTR_PACKAGE; Loading Loading @@ -328,6 +330,11 @@ class BlobStoreSession extends IBlobStoreSession.Stub { @NonNull byte[] certificate) { assertCallerIsOwner(); Objects.requireNonNull(packageName, "packageName must not be null"); Preconditions.checkArgument(packageName.length() <= MAX_PACKAGE_NAME_LENGTH, "packageName is longer than " + MAX_PACKAGE_NAME_LENGTH + " chars"); Objects.requireNonNull(certificate, "certificate must not be null"); Preconditions.checkArgument(certificate.length <= MAX_CERTIFICATE_LENGTH, "certificate is longer than " + MAX_CERTIFICATE_LENGTH + " chars"); synchronized (mSessionLock) { if (mState != STATE_OPENED) { throw new IllegalStateException("Not allowed to change access type in state: " Loading