apache / apache/iggy

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

Open
#2,982 1 comment 0 reactions 1 assignee Claimed by @atharvalade View on GitHub
go good first issue
Dominant language
Rust
Stars
4.9k
Forks
432
Avg merge
2d 10h
Merged PRs (30d)
173

Description

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](https://github.com/apache/iggy/blob/master/core/binary_protocol/src/requests/users/update_permissions.rs#L37-L39) and the decoder at [lines 64-65](https://github.com/apache/iggy/blob/master/core/binary_protocol/src/requests/users/update_permissions.rs#L64-L65)).

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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.