Fix possible panic for tlv8.UnmarshalBase64
This commit is contained in:
@@ -87,7 +87,7 @@ func (s *server) SetCharacteristic(conn net.Conn, aid uint8, iid uint64, value a
|
|||||||
switch char.Type {
|
switch char.Type {
|
||||||
case camera.TypeSetupEndpoints:
|
case camera.TypeSetupEndpoints:
|
||||||
var offer camera.SetupEndpoints
|
var offer camera.SetupEndpoints
|
||||||
if err := tlv8.UnmarshalBase64(value.(string), &offer); err != nil {
|
if err := tlv8.UnmarshalBase64(value, &offer); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ func (s *server) SetCharacteristic(conn net.Conn, aid uint8, iid uint64, value a
|
|||||||
|
|
||||||
case camera.TypeSelectedStreamConfiguration:
|
case camera.TypeSelectedStreamConfiguration:
|
||||||
var conf camera.SelectedStreamConfig
|
var conf camera.SelectedStreamConfig
|
||||||
if err := tlv8.UnmarshalBase64(value.(string), &conf); err != nil {
|
if err := tlv8.UnmarshalBase64(value, &conf); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -142,12 +142,13 @@ func appendValue(b []byte, tag byte, value reflect.Value) ([]byte, error) {
|
|||||||
return nil, errors.New("tlv8: not implemented: " + value.Kind().String())
|
return nil, errors.New("tlv8: not implemented: " + value.Kind().String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func UnmarshalBase64(s string, v any) error {
|
func UnmarshalBase64(in any, out any) error {
|
||||||
|
s, _ := in.(string) // protect from in == nil
|
||||||
data, err := base64.StdEncoding.DecodeString(s)
|
data, err := base64.StdEncoding.DecodeString(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return Unmarshal(data, v)
|
return Unmarshal(data, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
func UnmarshalReader(r io.Reader, v any) error {
|
func UnmarshalReader(r io.Reader, v any) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user