Handle incomplete protectors in destroyAllWeakTokenBasedProtectors()

A partner reported a NullPointerException in
SyntheticPasswordManager#destroyAllWeakTokenBasedProtectors() because
loadState(SP_BLOB_NAME, ...) returned null.  I think the only way this
could happen is if an incomplete protector exists on-disk due to a
crash, containing the secdiscardable file but not the spblob file.

It does seem theoretically possible, though, so make
destroyAllWeakTokenBasedProtectors() handle this case by filtering the
protectors by the existence of the spblob file.

Bug: 285241930
Change-Id: Ia148234aa332ca716dcb208a814ae2d3b3c9f6b7
Merged-In: Ia148234aa332ca716dcb208a814ae2d3b3c9f6b7
(cherry picked from commit 937dae7f44840d186d2ff25e438fbd3b4503bb98)
1 file changed