Fix panic on reading nil TLV8 #1507

This commit is contained in:
Alex X
2025-02-24 21:55:10 +03:00
parent 90544ba713
commit 45b223a2ef
2 changed files with 19 additions and 3 deletions

View File

@@ -2,12 +2,21 @@ package camera
import (
"encoding/base64"
"strings"
"testing"
"github.com/AlexxIT/go2rtc/pkg/hap"
"github.com/stretchr/testify/require"
)
func TestNilCharacter(t *testing.T) {
var res SetupEndpoints
char := &hap.Character{}
err := char.ReadTLV8(&res)
require.NotNil(t, err)
require.NotNil(t, strings.Contains(err.Error(), "can't read value"))
}
type testTLV8 struct {
name string
value string

View File

@@ -3,6 +3,7 @@ package hap
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
@@ -126,11 +127,17 @@ func (c *Character) Write(v any) (err error) {
// ReadTLV8 value to right struct
func (c *Character) ReadTLV8(v any) (err error) {
return tlv8.UnmarshalBase64(c.Value.(string), v)
if s, ok := c.Value.(string); ok {
return tlv8.UnmarshalBase64(s, v)
}
return fmt.Errorf("hap: can't read value: %v", v)
}
func (c *Character) ReadBool() bool {
return c.Value.(bool)
func (c *Character) ReadBool() (bool, error) {
if v, ok := c.Value.(bool); ok {
return v, nil
}
return false, fmt.Errorf("hap: can't read value: %v", c.Value)
}
func (c *Character) String() string {