Loading core/java/android/os/BugreportManager.java +10 −3 Original line number Diff line number Diff line Loading @@ -66,10 +66,14 @@ public class BugreportManager { @interface BugreportErrorCode {} /** The input options were invalid */ int BUGREPORT_ERROR_INVALID_INPUT = 1; int BUGREPORT_ERROR_INVALID_INPUT = IDumpstateListener.BUGREPORT_ERROR_INVALID_INPUT; /** A runtime error occured */ int BUGREPORT_ERROR_RUNTIME = 2; int BUGREPORT_ERROR_RUNTIME = IDumpstateListener.BUGREPORT_ERROR_RUNTIME_ERROR; /** User denied consent to share the bugreport */ int BUGREPORT_ERROR_USER_DENIED_CONSENT = IDumpstateListener.BUGREPORT_ERROR_USER_DENIED_CONSENT; /** * Called when taking bugreport resulted in an error. Loading Loading @@ -108,7 +112,10 @@ public class BugreportManager { DumpstateListener dsListener = new DumpstateListener(listener); try { mBinder.startBugreport(bugreportFd, screenshotFd, params.getMode(), dsListener); // Note: mBinder can get callingUid from the binder transaction. mBinder.startBugreport(-1 /* callingUid */, mContext.getOpPackageName(), bugreportFd, screenshotFd, params.getMode(), dsListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading services/core/java/com/android/server/os/BugreportManagerServiceImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package com.android.server.os; import android.annotation.RequiresPermission; import android.app.AppOpsManager; import android.content.Context; import android.os.Binder; import android.os.BugreportParams; import android.os.IDumpstate; import android.os.IDumpstateListener; Loading Loading @@ -46,9 +48,11 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { private IDumpstate mDs = null; private final Context mContext; private final AppOpsManager mAppOps; BugreportManagerServiceImpl(Context context) { mContext = context; mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); } @Override Loading @@ -60,21 +64,24 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { throw new UnsupportedOperationException("setListener is not allowed on this service"); } @Override @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(FileDescriptor bugreportFd, FileDescriptor screenshotFd, public void startBugreport(int callingUidUnused, String callingPackage, FileDescriptor bugreportFd, FileDescriptor screenshotFd, int bugreportMode, IDumpstateListener listener) throws RemoteException { int callingUid = Binder.getCallingUid(); // TODO(b/111441001): validate all arguments & ensure primary user validate(bugreportMode); mAppOps.checkPackage(callingUid, callingPackage); mDs = getDumpstateService(); if (mDs == null) { Slog.w(TAG, "Unable to get bugreport service"); // TODO(b/111441001): pass error on listener return; } mDs.startBugreport(bugreportFd, screenshotFd, bugreportMode, listener); mDs.startBugreport(callingUid, callingPackage, bugreportFd, screenshotFd, bugreportMode, listener); } private boolean validate(@BugreportParams.BugreportMode int mode) { Loading Loading
core/java/android/os/BugreportManager.java +10 −3 Original line number Diff line number Diff line Loading @@ -66,10 +66,14 @@ public class BugreportManager { @interface BugreportErrorCode {} /** The input options were invalid */ int BUGREPORT_ERROR_INVALID_INPUT = 1; int BUGREPORT_ERROR_INVALID_INPUT = IDumpstateListener.BUGREPORT_ERROR_INVALID_INPUT; /** A runtime error occured */ int BUGREPORT_ERROR_RUNTIME = 2; int BUGREPORT_ERROR_RUNTIME = IDumpstateListener.BUGREPORT_ERROR_RUNTIME_ERROR; /** User denied consent to share the bugreport */ int BUGREPORT_ERROR_USER_DENIED_CONSENT = IDumpstateListener.BUGREPORT_ERROR_USER_DENIED_CONSENT; /** * Called when taking bugreport resulted in an error. Loading Loading @@ -108,7 +112,10 @@ public class BugreportManager { DumpstateListener dsListener = new DumpstateListener(listener); try { mBinder.startBugreport(bugreportFd, screenshotFd, params.getMode(), dsListener); // Note: mBinder can get callingUid from the binder transaction. mBinder.startBugreport(-1 /* callingUid */, mContext.getOpPackageName(), bugreportFd, screenshotFd, params.getMode(), dsListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
services/core/java/com/android/server/os/BugreportManagerServiceImpl.java +11 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package com.android.server.os; import android.annotation.RequiresPermission; import android.app.AppOpsManager; import android.content.Context; import android.os.Binder; import android.os.BugreportParams; import android.os.IDumpstate; import android.os.IDumpstateListener; Loading Loading @@ -46,9 +48,11 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { private IDumpstate mDs = null; private final Context mContext; private final AppOpsManager mAppOps; BugreportManagerServiceImpl(Context context) { mContext = context; mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); } @Override Loading @@ -60,21 +64,24 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub { throw new UnsupportedOperationException("setListener is not allowed on this service"); } @Override @RequiresPermission(android.Manifest.permission.DUMP) public void startBugreport(FileDescriptor bugreportFd, FileDescriptor screenshotFd, public void startBugreport(int callingUidUnused, String callingPackage, FileDescriptor bugreportFd, FileDescriptor screenshotFd, int bugreportMode, IDumpstateListener listener) throws RemoteException { int callingUid = Binder.getCallingUid(); // TODO(b/111441001): validate all arguments & ensure primary user validate(bugreportMode); mAppOps.checkPackage(callingUid, callingPackage); mDs = getDumpstateService(); if (mDs == null) { Slog.w(TAG, "Unable to get bugreport service"); // TODO(b/111441001): pass error on listener return; } mDs.startBugreport(bugreportFd, screenshotFd, bugreportMode, listener); mDs.startBugreport(callingUid, callingPackage, bugreportFd, screenshotFd, bugreportMode, listener); } private boolean validate(@BugreportParams.BugreportMode int mode) { Loading