Skip to content

Go SDK: UpdatePermissions omits mandatory permissions_len field when permissions are nil #2982

@atharvalade

Description

@atharvalade

Same root cause as the CreateUser issue. The Rust wire format for UpdatePermissions always includes permissions_len:u32_le on the wire regardless of has_permissions (see update_permissions.rs#L37-L39 and the decoder at lines 64-65).

In the Go SDK (foreign/go/internal/command/user.go), the nil-permissions path writes only the flag byte:

} else {
    bytes[position] = 0 // missing permissions_len after this
}

Note: #2973 partially fixes this function — it adds +1 to the base length to prevent a panic when permissions are nil. But the output is still 4 bytes short of what the server expects.

Fix: Change the base length from len(userIdBytes) + 1 to len(userIdBytes) + 1 + 4, and write 4 zero bytes for permissions_len in the else branch.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions