fix(common.opcua): parse full range of status codes with uint32 (#12376)

This commit is contained in:
Sylvain Bruyère 2022-12-12 17:54:21 +01:00 committed by GitHub
parent c6663aca4f
commit 35b5476c83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 4 deletions

View File

@ -138,11 +138,11 @@ func (o *OpcUAClient) setupOptions() error {
func (o *OpcUAClient) setupWorkarounds() error {
o.codes = []ua.StatusCode{ua.StatusOK}
for _, c := range o.Config.Workarounds.AdditionalValidStatusCodes {
val, err := strconv.ParseInt(c, 0, 32) // setting 32 bits to allow for safe conversion
val, err := strconv.ParseUint(c, 0, 32) // setting 32 bits to allow for safe conversion
if err != nil {
return err
}
o.codes = append(o.codes, ua.StatusCode(uint32(val)))
o.codes = append(o.codes, ua.StatusCode(val))
}
return nil

View File

@ -10,7 +10,7 @@ func TestSetupWorkarounds(t *testing.T) {
o := OpcUAClient{
Config: &OpcUAClientConfig{
Workarounds: OpcUAWorkarounds{
AdditionalValidStatusCodes: []string{"0xC0", "0x00AA0000"},
AdditionalValidStatusCodes: []string{"0xC0", "0x00AA0000", "0x80000000"},
},
},
}
@ -18,10 +18,11 @@ func TestSetupWorkarounds(t *testing.T) {
err := o.setupWorkarounds()
require.NoError(t, err)
require.Len(t, o.codes, 3)
require.Len(t, o.codes, 4)
require.Equal(t, o.codes[0], ua.StatusCode(0))
require.Equal(t, o.codes[1], ua.StatusCode(192))
require.Equal(t, o.codes[2], ua.StatusCode(11141120))
require.Equal(t, o.codes[3], ua.StatusCode(2147483648))
}
func TestCheckStatusCode(t *testing.T) {