Do not try to handle non ZX_PKT_TYPE_SIGNAL_ONE incorrectly

Closes https://github.com/dart-lang/sdk/pull/50240
TEST=building for fuchsia and testing on Nest Hub device.

GitOrigin-RevId: 28a6d9d8654f81cdf86161b1fc884b289a035392
Change-Id: Ie84d7943ea0d874fe4e5b421ddf47b8f0a884628
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/264640
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
diff --git a/runtime/bin/eventhandler_fuchsia.cc b/runtime/bin/eventhandler_fuchsia.cc
index 1f14ffb..ec2336b 100644
--- a/runtime/bin/eventhandler_fuchsia.cc
+++ b/runtime/bin/eventhandler_fuchsia.cc
@@ -17,6 +17,7 @@
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <zircon/assert.h>
 #include <zircon/status.h>
 #include <zircon/syscalls.h>
 #include <zircon/syscalls/object.h>
@@ -545,16 +546,24 @@
   LOG_INFO("HandlePacket: Got event packet: key=%lx\n", pkt->key);
   LOG_INFO("HandlePacket: Got event packet: type=%x\n", pkt->type);
   LOG_INFO("HandlePacket: Got event packet: status=%d\n", pkt->status);
+
   if (pkt->type == ZX_PKT_TYPE_USER) {
     ASSERT(pkt->key == kInterruptPacketKey);
     InterruptMessage* msg = reinterpret_cast<InterruptMessage*>(&pkt->user);
     HandleInterrupt(msg);
     return;
   }
-  LOG_INFO("HandlePacket: Got event packet: observed = %x\n",
-           pkt->signal.observed);
-  LOG_INFO("HandlePacket: Got event packet: count = %ld\n", pkt->signal.count);
 
+  if (pkt->type != ZX_PKT_TYPE_SIGNAL_ONE) {
+    LOG_ERR("HandlePacket: Got unexpected packet type: key=%x\n", pkt->type);
+    return;
+  }
+  
+  // Handle pkt->type == ZX_PKT_TYPE_SIGNAL_ONE
+  ZX_ASSERT(pkt->key != 0);
+  LOG_INFO("HandlePacket: Got event packet: observed = %x\n",
+          pkt->signal.observed);
+  LOG_INFO("HandlePacket: Got event packet: count = %ld\n", pkt->signal.count);
   DescriptorInfo* di = reinterpret_cast<DescriptorInfo*>(pkt->key);
   zx_signals_t observed = pkt->signal.observed;
   const intptr_t old_mask = di->Mask();