`GIDGoogleUser.authState` is sometimes read without a lock
メンテナーはふだん 3 日以内に返信
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 18/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- ios, objective-c
- 領域
- authentication, mobile
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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)
- 主要言語
- Objective-C
- スター
- 756
- フォーク
- 283
- 平均マージ
- 9日 5時間
- マージ済み PR(30日)
- 4
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
google/GoogleSignIn-iOS のほかの issue
-
Revoke request uses GET instead of POST再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンenhancement triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
google/GoogleSignIn-iOS#621 ·
メンテナーはふだん 3 日以内に返信
-
enhancement triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
google/GoogleSignIn-iOS#620 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
google/GoogleSignIn-iOS#440 · コメント 4 件 · リアクション 2 件 ·
メンテナーはふだん 3 日以内に返信
-
question
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
google/GoogleSignIn-iOS#647 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
enhancement triage
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
google/GoogleSignIn-iOS#611 ·
メンテナーはふだん 3 日以内に返信
google/GoogleSignIn-iOS の issue をすべて見る
似ている issue
-
Missing info Missing repro Platform: iOS
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
software-mansion/react-native-reanimated#10908 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
unoplatform/uno#25515 ·
メンテナーはふだん 1 日以内に返信
-
Missing repro
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
software-mansion/react-native-svg#3082 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug-pending-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
NativeScript/NativeScript#11525 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
holepunchto/bare-bluetooth-apple#84 ·
メンテナーはふだん 1 日以内に返信