pw_rpc: Fix segfault for BaseClientCall assignment

channel_ is default nullptr and therefore RegisterCall can crash when
searching through existing calls on reassignment with multiple
outstanding calls on a single client.

Tested: Unit test segfaults before, passes now.

No-Docs-Update-Reason: Bug fix

Change-Id: I2f44f42630f83a4818fa4c5435bb60b8fa4f342c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/56789
Commit-Queue: Tri Pho <tripho@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
2 files changed
tree: af08ef8645cc04e162a8779217ba2a2402f783f7
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_boot/
  15. pw_boot_cortex_m/
  16. pw_build/
  17. pw_build_info/
  18. pw_bytes/
  19. pw_checksum/
  20. pw_chrono/
  21. pw_chrono_embos/
  22. pw_chrono_freertos/
  23. pw_chrono_stl/
  24. pw_chrono_threadx/
  25. pw_cli/
  26. pw_console/
  27. pw_containers/
  28. pw_cpu_exception/
  29. pw_cpu_exception_cortex_m/
  30. pw_crypto/
  31. pw_docgen/
  32. pw_doctor/
  33. pw_env_setup/
  34. pw_function/
  35. pw_fuzzer/
  36. pw_hdlc/
  37. pw_hex_dump/
  38. pw_i2c/
  39. pw_interrupt/
  40. pw_interrupt_cortex_m/
  41. pw_kvs/
  42. pw_libc/
  43. pw_log/
  44. pw_log_basic/
  45. pw_log_null/
  46. pw_log_rpc/
  47. pw_log_tokenized/
  48. pw_malloc/
  49. pw_malloc_freelist/
  50. pw_metric/
  51. pw_minimal_cpp_stdlib/
  52. pw_module/
  53. pw_multisink/
  54. pw_package/
  55. pw_persistent_ram/
  56. pw_polyfill/
  57. pw_preprocessor/
  58. pw_presubmit/
  59. pw_protobuf/
  60. pw_protobuf_compiler/
  61. pw_random/
  62. pw_result/
  63. pw_ring_buffer/
  64. pw_router/
  65. pw_rpc/
  66. pw_snapshot/
  67. pw_span/
  68. pw_status/
  69. pw_stm32cube_build/
  70. pw_stream/
  71. pw_string/
  72. pw_symbolizer/
  73. pw_sync/
  74. pw_sync_baremetal/
  75. pw_sync_embos/
  76. pw_sync_freertos/
  77. pw_sync_stl/
  78. pw_sync_threadx/
  79. pw_sys_io/
  80. pw_sys_io_arduino/
  81. pw_sys_io_baremetal_lm3s6965evb/
  82. pw_sys_io_baremetal_stm32f429/
  83. pw_sys_io_stdio/
  84. pw_target_runner/
  85. pw_thread/
  86. pw_thread_embos/
  87. pw_thread_freertos/
  88. pw_thread_stl/
  89. pw_thread_threadx/
  90. pw_tls_client/
  91. pw_tls_client_boringssl/
  92. pw_tls_client_mbedtls/
  93. pw_tokenizer/
  94. pw_tool/
  95. pw_toolchain/
  96. pw_trace/
  97. pw_trace_tokenized/
  98. pw_transfer/
  99. pw_unit_test/
  100. pw_varint/
  101. pw_watch/
  102. pw_web_ui/
  103. targets/
  104. third_party/
  105. .bazelignore
  106. .bazelrc
  107. .clang-format
  108. .clang-tidy
  109. .eslintrc.json
  110. .gitattributes
  111. .gitignore
  112. .gn
  113. .prettierrc.js
  114. .pylintrc
  115. activate.bat
  116. AUTHORS
  117. bootstrap.bat
  118. bootstrap.sh
  119. BUILD.bazel
  120. BUILD.gn
  121. BUILDCONFIG.gn
  122. CMakeLists.txt
  123. LICENSE
  124. modules.gni
  125. OWNERS
  126. package.json
  127. PW_PLUGINS
  128. README.md
  129. tsconfig.json
  130. WORKSPACE
  131. yarn.lock
README.md

See our website: http://pigweed.dev