[incremental service] avoid nullptr dereferencing

externalListener could be nullptr.

BUG: 150795871
Test: atest service.incremental_test
Change-Id: I2843e1751cb1f7e9318edb05e9a8f5256ad9f3a8
This commit is contained in:
Songchun Fan
2020-03-17 12:37:07 -07:00
parent eeff2cf753
commit 306b7df3f9

View File

@@ -1090,7 +1090,9 @@ bool IncrementalService::prepareDataLoader(IncrementalService::IncFsMount& ifs,
base::unique_fd(::dup(ifs.control.pendingReads)));
fsControlParcel.incremental->log.reset(base::unique_fd(::dup(ifs.control.logs)));
sp<IncrementalDataLoaderListener> listener =
new IncrementalDataLoaderListener(*this, *externalListener);
new IncrementalDataLoaderListener(*this,
externalListener ? *externalListener
: DataLoaderStatusListener());
bool created = false;
auto status = mDataLoaderManager->initializeDataLoader(ifs.mountId, *dlp, fsControlParcel,
listener, &created);
@@ -1230,8 +1232,8 @@ binder::Status IncrementalService::IncrementalDataLoaderListener::onStatusChange
std::unique_lock l(incrementalService.mLock);
const auto& ifs = incrementalService.getIfsLocked(mountId);
if (!ifs) {
LOG(WARNING) << "Received data loader status " << int(newStatus) << " for unknown mount "
<< mountId;
LOG(WARNING) << "Received data loader status " << int(newStatus)
<< " for unknown mount " << mountId;
return binder::Status::ok();
}
ifs->dataLoaderStatus = newStatus;