pw_log_rpc: Fix out-of-range memory access

The tests of pw_log_rpc attempt to access out-of-range array indicies.
This change resizes the arrays to properly hold the test contents.

Bug: b/239856986
Change-Id: I0be710253a1039e91d0258270fcfec6798def17e
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/103790
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Carlos Chinchilla <cachinchilla@google.com>
diff --git a/pw_log_rpc/log_filter_service_test.cc b/pw_log_rpc/log_filter_service_test.cc
index 2c1606d..8e30d5c 100644
--- a/pw_log_rpc/log_filter_service_test.cc
+++ b/pw_log_rpc/log_filter_service_test.cc
@@ -38,7 +38,7 @@
 
  protected:
   FilterMap filter_map_;
-  static constexpr size_t kMaxFilterRules = 3;
+  static constexpr size_t kMaxFilterRules = 4;
   std::array<Filter::Rule, kMaxFilterRules> rules1_;
   std::array<Filter::Rule, kMaxFilterRules> rules2_;
   std::array<Filter::Rule, kMaxFilterRules> rules3_;
@@ -137,7 +137,7 @@
 }
 
 TEST_F(FilterServiceTest, SetFilterRules) {
-  const std::array<Filter::Rule, 4> new_rules{{
+  const std::array<Filter::Rule, kMaxFilterRules> new_rules{{
       {
           .action = Filter::Rule::Action::kKeep,
           .level_greater_than_or_equal = log::FilterRule::Level::DEBUG_LEVEL,
@@ -175,8 +175,9 @@
                          std::byte('R')},
       },
   }};
-  const Filter new_filter(filters_[0].id(),
-                          const_cast<std::array<Filter::Rule, 4>&>(new_rules));
+  const Filter new_filter(
+      filters_[0].id(),
+      const_cast<std::array<Filter::Rule, kMaxFilterRules>&>(new_rules));
 
   std::byte request_buffer[512];
   const auto request = EncodeFilterRequest(new_filter, request_buffer);
@@ -194,7 +195,7 @@
 }
 
 TEST_F(FilterServiceTest, SetFilterRulesWhenUsedByDrain) {
-  const std::array<Filter::Rule, 4> new_filter_rules{{
+  const std::array<Filter::Rule, kMaxFilterRules> new_filter_rules{{
       {
           .action = Filter::Rule::Action::kKeep,
           .level_greater_than_or_equal = log::FilterRule::Level::CRITICAL_LEVEL,
@@ -238,7 +239,8 @@
   }};
   Filter& filter = filters_[0];
   const Filter new_filter(
-      filter.id(), const_cast<std::array<Filter::Rule, 4>&>(new_filter_rules));
+      filter.id(),
+      const_cast<std::array<Filter::Rule, kMaxFilterRules>&>(new_filter_rules));
 
   std::byte request_buffer[256];
   const auto request = EncodeFilterRequest(new_filter, request_buffer);
@@ -266,7 +268,7 @@
   }
 
   // A new request for logs with a new filter updates filter.
-  const std::array<Filter::Rule, 4> second_filter_rules{{
+  const std::array<Filter::Rule, kMaxFilterRules> second_filter_rules{{
       {
           .action = Filter::Rule::Action::kKeep,
           .level_greater_than_or_equal = log::FilterRule::Level::DEBUG_LEVEL,
@@ -298,7 +300,8 @@
   }};
   const Filter second_filter(
       filter.id(),
-      const_cast<std::array<Filter::Rule, 4>&>(second_filter_rules));
+      const_cast<std::array<Filter::Rule, kMaxFilterRules>&>(
+          second_filter_rules));
 
   std::memset(request_buffer, 0, sizeof(request_buffer));
   const auto second_filter_request =
diff --git a/pw_log_rpc/log_service_test.cc b/pw_log_rpc/log_service_test.cc
index f77d5bc..a8296be 100644
--- a/pw_log_rpc/log_service_test.cc
+++ b/pw_log_rpc/log_service_test.cc
@@ -114,7 +114,7 @@
   multisink::MultiSink multisink_;
   RpcLogDrainMap drain_map_;
   std::array<std::byte, kMaxLogEntrySize> entry_encode_buffer_;
-  static constexpr size_t kMaxFilterRules = 3;
+  static constexpr size_t kMaxFilterRules = 4;
   std::array<Filter::Rule, kMaxFilterRules> rules1_;
   std::array<Filter::Rule, kMaxFilterRules> rules2_;
   std::array<Filter::Rule, kMaxFilterRules> rules3_;