Skip to content

Commit e6c8b8f

Browse files
committed
fix(credentials): address gosec and errcheck lint warnings
- Check read byte count before accessing buffer to fix G602 gosec warnings - Explicitly discard term.Restore error to fix errcheck warning
1 parent e9fec47 commit e6c8b8f

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

internal/utils/credentials/input.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,38 @@ func PromptMaskedWithAsterisks(stdin *os.File) (string, error) {
1717
if err != nil {
1818
return "", fmt.Errorf("failed to set raw terminal: %w", err)
1919
}
20-
defer term.Restore(fd, oldState)
20+
defer func() { _ = term.Restore(fd, oldState) }()
2121
return readMaskedInput(stdin, os.Stderr)
2222
}
2323

2424
// readMaskedInput reads bytes one at a time from r, echoing '*' to echo for each
2525
// printable character. Handles backspace, Ctrl+C, and Enter.
2626
func readMaskedInput(r io.Reader, echo io.Writer) (string, error) {
2727
var buf []byte
28-
b := make([]byte, 1)
28+
var b [1]byte
2929
for {
30-
if _, err := r.Read(b); err != nil {
30+
if _, err := io.ReadFull(r, b[:]); err != nil {
3131
fmt.Fprint(echo, "\r\n")
32-
if err == io.EOF {
32+
if err == io.EOF || err == io.ErrUnexpectedEOF {
3333
return string(buf), nil
3434
}
3535
return "", fmt.Errorf("failed to read input: %w", err)
3636
}
37+
ch := b[0]
3738
switch {
38-
case b[0] == 3: // Ctrl+C
39+
case ch == 3: // Ctrl+C
3940
fmt.Fprint(echo, "\r\n")
4041
return "", fmt.Errorf("interrupted")
41-
case b[0] == 13 || b[0] == 10: // Enter
42+
case ch == 13 || ch == 10: // Enter
4243
fmt.Fprint(echo, "\r\n")
4344
return string(buf), nil
44-
case b[0] == 127 || b[0] == 8: // Backspace / Delete
45+
case ch == 127 || ch == 8: // Backspace / Delete
4546
if len(buf) > 0 {
4647
buf = buf[:len(buf)-1]
4748
fmt.Fprint(echo, "\b \b")
4849
}
49-
case b[0] >= 32 && b[0] < 127: // Printable ASCII
50-
buf = append(buf, b[0])
50+
case ch >= 32 && ch < 127: // Printable ASCII
51+
buf = append(buf, ch)
5152
fmt.Fprint(echo, "*")
5253
}
5354
}

0 commit comments

Comments
 (0)