brpc
brpc copied to clipboard
fix(protocol): fix attachment size limit issue when size exceeds uint32
- Change attachment_size from int32 to int64 in protobuf definitions (baidu_rpc_meta.proto, rpc_dump.proto, nshead_meta.proto)
- Fix type mismatches in ProcessRpcRequest and ProcessRpcResponse:
- Change req_size/res_size from int to size_t
- Change body_without_attachment_size from int to size_t
- Add overflow checks and proper type casting
- Fix size inconsistency in PackRpcHeader and SerializeRpcHeaderAndMeta:
- Change payload_size parameter from int to size_t
- Add overflow check for meta_size + payload_size exceeding UINT32_MAX
- Update format strings to use PRId64 and %zu for proper large value display
This fix allows the protocol to correctly handle attachment sizes greater than 4GB (uint32 max), preventing integer overflow and size mismatches.
Fixes #1348
What problem does this PR solve?
Issue Number: resolve
Problem Summary:
What is changed and the side effects?
Changed:
Side effects:
-
Performance effects:
-
Breaking backward compatibility:
Check List:
- Please make sure your changes are compilable.
- When providing us with a new feature, it is best to add related tests.
- Please follow Contributor Covenant Code of Conduct.