`GIDGoogleUser.authState` is sometimes read without a lock
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 18/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- ios, objective-c
- Domínio
- authentication, mobile
Direção de pesquisa
Start in GIDGoogleUser, where the private lock guards authState, then trace the direct accesses the issue lists: GIDSignIn (addScopes and disconnect), GIDEMMSupport, and GTMAuthSession.primeForRefresh. The issue names no file paths or tests. Done means every read and write goes through one lock and multi-field reads happen in a single acquisition, but the issue leaves open whether the fix goes inside OIDAuthState or into the public API, so agree that with maintainers first.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
AC:
- Reads & writes to
GIDGoogleUser.authStateare serialized under one lock. Multi-field reads must happen in the same lock acquisition.
Background:
GIDGoogleUser serializes its own authState updates & multi-field reads under a private lock. However, the following readers access it directly:
GIDSignIn, for the addScopes and disconnect pathsGIDEMMSupportaccesses it viaauthSession.authState- Apps can access it via
fetcherAuthorizer. Worse still, the authorizer can also write to that state via-[OIDAuthState performActionWithFreshTokens:additionalRefreshParameters:]. GTMAuthSession.primeForRefreshcan also write toauthState.
The full fix probably needs a lock inside OIDAuthState itself, or a public API change pushing reads via GIDGoogleUser & disallowing direct access. (OIDAuthState does not have an internal lock, currently)
- Linguagem predominante
- Objective-C
- Estrelas
- 756
- Forks
- 283
- Merge médio
- 3d 1h
- PRs com merge (30d)
- 2
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de google/GoogleSignIn-iOS
-
Revoke request uses GET instead of POSTTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertaenhancement triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
google/GoogleSignIn-iOS#621 ·
-
enhancement triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
google/GoogleSignIn-iOS#620 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
google/GoogleSignIn-iOS#440 · 4 comentários · 2 reações ·
-
bug triage
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
google/GoogleSignIn-iOS#647 ·
-
enhancement triage
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
google/GoogleSignIn-iOS#611 ·
Todas as issues de google/GoogleSignIn-iOS
Issues semelhantes
-
bug-pending-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
NativeScript/NativeScript#11525 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
holepunchto/bare-bluetooth-apple#84 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
AvaloniaUI/Avalonia#22461 ·
Mantenedores costumam responder em até 2 dias
-
e: impeller engine team-engine
Dificuldade 2/5 Meio dia Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
beeware/rubicon-objc#844 · 1 comentário ·
Mantenedores costumam responder em até 1 dia