Skip to content

Commit 2ba3d21

Browse files
fix: harden m365 broker store zero value
1 parent 1f6b3a3 commit 2ba3d21

3 files changed

Lines changed: 24 additions & 2 deletions

File tree

.deadcode-baseline.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ internal/googleauth/scopes.go:72:6: unreachable func: AllScopes
4141
internal/googleauth/scopes.go:96:6: unreachable func: knownCommandNames
4242
internal/msauth/broker_store.go:28:6: unreachable func: NewMemoryBrokerStore
4343
internal/msauth/broker_store.go:32:29: unreachable func: MemoryBrokerStore.Save
44-
internal/msauth/broker_store.go:46:29: unreachable func: MemoryBrokerStore.Consume
45-
internal/msauth/broker_store.go:72:6: unreachable func: ValidateBrokerAuthorizedEmail
44+
internal/msauth/broker_store.go:50:29: unreachable func: MemoryBrokerStore.Consume
45+
internal/msauth/broker_store.go:76:6: unreachable func: ValidateBrokerAuthorizedEmail
4646
internal/msauth/scopes.go:17:6: unreachable func: canonicalPilotScope
4747
internal/msauth/scopes.go:40:6: unreachable func: GuardPilotScopes
4848
internal/officetext/extract.go:46:6: unreachable func: ExtractTextByMIME

internal/msauth/broker_store.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ func (s *MemoryBrokerStore) Save(_ context.Context, session BrokerSession) error
3838
s.mu.Lock()
3939
defer s.mu.Unlock()
4040

41+
if s.sessions == nil {
42+
s.sessions = make(map[string]BrokerSession)
43+
}
44+
4145
s.sessions[state] = session
4246

4347
return nil

internal/msauth/broker_store_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,24 @@ func TestMemoryBrokerStoreConsumesSessionOnce(t *testing.T) {
3030
}
3131
}
3232

33+
func TestMemoryBrokerStoreZeroValueSaveInitializesSessionMap(t *testing.T) {
34+
var store MemoryBrokerStore
35+
session := BrokerSession{State: "state", ExpectedEmail: "pilot@example.com", ExpiresAt: time.Now().Add(time.Minute)}
36+
37+
if err := store.Save(context.Background(), session); err != nil {
38+
t.Fatalf("save zero-value store: %v", err)
39+
}
40+
41+
got, err := store.Consume(context.Background(), "state")
42+
if err != nil {
43+
t.Fatalf("consume zero-value store: %v", err)
44+
}
45+
46+
if got.ExpectedEmail != "pilot@example.com" {
47+
t.Fatalf("session = %#v", got)
48+
}
49+
}
50+
3351
func TestMemoryBrokerStoreRejectsExpiredSession(t *testing.T) {
3452
store := NewMemoryBrokerStore()
3553
session := BrokerSession{State: "expired", ExpectedEmail: "pilot@example.com", ExpiresAt: time.Now().Add(-time.Minute)}

0 commit comments

Comments
 (0)