remove fallback if rand.Reader fails

Failing to read from rand.Reader essentially can't happen, and if it
does is not possible to fallback securely, so just panic

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino 2024-11-09 15:55:18 +01:00
parent 4eb4ff66ce
commit 03724d5eb1
No known key found for this signature in database
GPG key ID: 935D2952DEC4EECF

View file

@ -48,7 +48,6 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
"github.com/lithammer/shortuuid/v4" "github.com/lithammer/shortuuid/v4"
"github.com/rs/xid"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"github.com/drakkan/sftpgo/v2/internal/logger" "github.com/drakkan/sftpgo/v2/internal/logger"
@ -566,23 +565,17 @@ func createDirPathIfMissing(file string, perm os.FileMode) error {
func GenerateRandomBytes(length int) []byte { func GenerateRandomBytes(length int) []byte {
b := make([]byte, length) b := make([]byte, length)
_, err := io.ReadFull(rand.Reader, b) _, err := io.ReadFull(rand.Reader, b)
if err == nil { if err != nil {
PanicOnError(fmt.Errorf("failed to read random data (see https://go.dev/issue/66821): %w", err))
}
return b return b
}
b = xid.New().Bytes()
for len(b) < length {
b = append(b, xid.New().Bytes()...)
}
return b[:length]
} }
// GenerateUniqueID returns an unique ID // GenerateUniqueID returns an unique ID
func GenerateUniqueID() string { func GenerateUniqueID() string {
u, err := uuid.NewRandom() u, err := uuid.NewRandom()
if err != nil { if err != nil {
return xid.New().String() PanicOnError(fmt.Errorf("failed to read random data (see https://go.dev/issue/66821): %w", err))
} }
return shortuuid.DefaultEncoder.Encode(u) return shortuuid.DefaultEncoder.Encode(u)
} }