Stop bugreportd if binder call fails

Fixes: 128949427
Test: Tested by supplying a valid fd that dumpstate does not have access
to, but system server has access to. So the startBugreport call fails.
Verified that subsequent calls with proper arguments go through and not
encounter BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS.

Change-Id: I393e09a4e35ae5191406112d76f27fe89418c069
This commit is contained in:
Nandana Dutt
2019-03-22 14:48:50 +00:00
parent 1a80ff943d
commit 664f6466ec

View File

@@ -174,7 +174,11 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub {
ds.startBugreport(callingUid, callingPackage,
bugreportFd, screenshotFd, bugreportMode, myListener);
} catch (RemoteException e) {
reportError(listener, IDumpstateListener.BUGREPORT_ERROR_RUNTIME_ERROR);
// bugreportd service is already started now. We need to kill it to manage the
// lifecycle correctly. If we don't subsequent callers will get
// BUGREPORT_ERROR_ANOTHER_REPORT_IN_PROGRESS error.
// Note that listener will be notified by the death recipient below.
cancelBugreport();
}
}