brpc icon indicating copy to clipboard operation
brpc copied to clipboard

fix(protocol): fix attachment size limit issue when size exceeds uint32

Open InJunee opened this issue 3 weeks ago • 6 comments

  • 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:

InJunee avatar Dec 09 '25 08:12 InJunee