mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Handle base64 decoding correctly to avoid panic (#26483)
Fix the panic if the "base64 secret" is too long.
This commit is contained in:
		@@ -4,6 +4,7 @@
 | 
			
		||||
package util
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/base64"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
@@ -233,3 +234,16 @@ func TestToPointer(t *testing.T) {
 | 
			
		||||
	val123 := 123
 | 
			
		||||
	assert.False(t, &val123 == ToPointer(val123))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestBase64FixedDecode(t *testing.T) {
 | 
			
		||||
	_, err := Base64FixedDecode(base64.RawURLEncoding, []byte("abcd"), 32)
 | 
			
		||||
	assert.ErrorContains(t, err, "invalid base64 decoded length")
 | 
			
		||||
	_, err = Base64FixedDecode(base64.RawURLEncoding, []byte(strings.Repeat("a", 64)), 32)
 | 
			
		||||
	assert.ErrorContains(t, err, "invalid base64 decoded length")
 | 
			
		||||
 | 
			
		||||
	str32 := strings.Repeat("x", 32)
 | 
			
		||||
	encoded32 := base64.RawURLEncoding.EncodeToString([]byte(str32))
 | 
			
		||||
	decoded32, err := Base64FixedDecode(base64.RawURLEncoding, []byte(encoded32), 32)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, str32, string(decoded32))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user