Skip to content

Commit 7988a91

Browse files
committed
notify: use reflect.TypeOf rather than %T
CodeQL seems to think that %T can expose struct fields, which it cannot.
1 parent 6f51a40 commit 7988a91

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

internal/notify/multi.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"context"
99
"fmt"
1010
"os"
11+
"reflect"
1112
"strings"
1213

1314
"github.com/moov-io/achgateway/internal/service"
@@ -74,8 +75,16 @@ func setupBackoff(cfg *service.NotificationRetries) (retry.Backoff, error) {
7475

7576
func (ms *MultiSender) senderTypes() string {
7677
out := make([]string, len(ms.senders))
77-
for i := range ms.senders {
78-
out[i] = fmt.Sprintf("%T", ms.senders[i])
78+
for i, sender := range ms.senders {
79+
// Get the type of each sender
80+
typeName := reflect.TypeOf(sender).Name()
81+
if typeName == "" {
82+
// Handle pointer types by getting the element type
83+
if reflect.TypeOf(sender).Kind() == reflect.Ptr {
84+
typeName = reflect.TypeOf(sender).Elem().Name()
85+
}
86+
}
87+
out[i] = typeName
7988
}
8089
return strings.Join(out, ", ")
8190
}

internal/notify/multi_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ func TestMultiSender_senderTypes(t *testing.T) {
5050
Email: []string{"testing"},
5151
}
5252

53-
sender, err := NewMultiSender(logger, cfg, notifiers)
53+
ms, err := NewMultiSender(logger, cfg, notifiers)
5454
require.NoError(t, err)
5555

56-
require.Equal(t, "*notify.Email", sender.senderTypes()) // no password leaked
56+
ms.senders = append(ms.senders, &MockSender{})
57+
58+
require.Equal(t, "Email, MockSender", ms.senderTypes()) // no password leaked
5759
}
5860

5961
func TestMultiSenderErr(t *testing.T) {

0 commit comments

Comments
 (0)