Skip to content

Commit 51f3e07

Browse files
authored
Fido: Disable screen sign-in without local registration (#3459)
Avoid a crash, when the user clicks on screen sign-in
1 parent 1c87f96 commit 51f3e07

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ class AuthenticatorActivity : AppCompatActivity(), TransportHandlerCallback {
184184
this.privilegedCallerName = callerName.takeIf { options is BrowserRequestOptions }
185185
this.requiresPrivilege = requiresPrivilege
186186
this.supportedTransports = transportHandlers.filter { it.isSupported }.map { it.transport }.toSet()
187+
// To sign-in with screen-lock, there must be a local user.
188+
if (options.type == RequestOptionsType.SIGN && noLocalUserForSignInstantBlock) {
189+
this.implementedTransports = this.implementedTransports.filter { it != SCREEN_LOCK }.toSet()
190+
}
187191
}.arguments
188192
val next = if (requiresPrivilege) {
189193
null

play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ class AuthenticatorActivityFragmentData(val arguments: Bundle = Bundle()) {
2222
get() = arguments.getStringArrayList(KEY_SUPPORTED_TRANSPORTS)?.map { Transport.valueOf(it) }?.toSet().orEmpty()
2323
set(value) = arguments.putStringArrayList(KEY_SUPPORTED_TRANSPORTS, ArrayList(value.map { it.name }))
2424

25-
val implementedTransports: Set<Transport>
26-
get() = AuthenticatorActivity.IMPLEMENTED_TRANSPORTS
25+
var implementedTransports: Set<Transport>
26+
get() = arguments.getStringArrayList(KEY_IMPLEMENTED_TRANSPORTS)?.map { Transport.valueOf(it) }?.toSet()
27+
?: AuthenticatorActivity.IMPLEMENTED_TRANSPORTS
28+
set(value) = arguments.putStringArrayList(KEY_IMPLEMENTED_TRANSPORTS, ArrayList(value.map { it.name }))
2729

2830
var privilegedCallerName: String?
2931
get() = arguments.getString(KEY_PRIVILEGED_CALLER_NAME)
@@ -37,6 +39,7 @@ class AuthenticatorActivityFragmentData(val arguments: Bundle = Bundle()) {
3739
const val KEY_APP_NAME = "appName"
3840
const val KEY_IS_FIRST = "isFirst"
3941
const val KEY_SUPPORTED_TRANSPORTS = "supportedTransports"
42+
const val KEY_IMPLEMENTED_TRANSPORTS = "implementedTransports"
4043
const val KEY_REQUIRES_PRIVILEGE = "requiresPrivilege"
4144
const val KEY_PRIVILEGED_CALLER_NAME = "privilegedCallerName"
4245
}

0 commit comments

Comments
 (0)