Hello,

There are several places here where the return values ​​of the
ports_create_class and ports_create_bucket functions are not checked.  In the
event of an out-of-memory situation, these functions may return NULL; we
should check the return value to avoid dereferencing a null pointer.

Thanks,

--
Mikhail Karpov
From 9b7b679ab7b72016916e204c6fa1846a05b6f5ac Mon Sep 17 00:00:00 2001
From: Mikhail Karpov <[email protected]>
Date: Sun, 1 Nov 2026 13:59:53 +0700
Subject: [PATCH 4/5] Added checks for ports_create_class and 
 ports_create_bucket return value in several place

---
 auth/auth.c                   |  5 +++++
 devnode/devnode.c             |  8 ++++++++
 eth-multiplexer/multiplexer.c |  8 ++++++++
 exec/main.c                   |  2 ++
 ext2fs/pager.c                |  4 ++++
 fatfs/pager.c                 |  5 +++++
 isofs/pager.c                 |  2 ++
 libdiskfs/init-init.c         | 13 ++++++++++++
 libfshelp/get-identity.c      |  1 +
 libmachdev/ds_routines.c      |  3 +++
 libmachdev/trivfs_server.c    | 11 ++++++++++
 libnetfs/init-init.c          |  9 +++++++++
 libpager/pager-create.c       |  1 +
 libports/create-bucket.c      |  1 +
 lwip/main.c                   |  9 +++++++++
 lwip/port/netif/hurdethif.c   |  5 +++++
 lwip/startup.c                |  2 ++
 pfinet/ethernet.c             |  5 +++++
 pfinet/main.c                 | 11 ++++++++++
 pflocal/sock.c                |  9 +++++++++
 proc/main.c                   | 13 ++++++++++++
 storeio/pager.c               | 38 ++++++++++++++++++++++-------------
 term/devio.c                  | 11 +++++++++-
 term/main.c                   |  4 ++++
 trans/crash.c                 |  2 ++
 trans/ifsock.c                |  8 ++++++++
 trans/random.c                |  2 ++
 trans/streamio.c              |  8 ++++++++
 utils/fakeauth.c              |  5 +++++
 utils/rpctrace.c              |  9 +++++++++
 30 files changed, 199 insertions(+), 15 deletions(-)

diff --git a/auth/auth.c b/auth/auth.c
index 761185a..1c01913 100644
--- a/auth/auth.c
+++ b/auth/auth.c
@@ -493,7 +493,12 @@ main (int argc, char **argv)
   argp_parse (&argp, argc, argv, 0, 0, 0);
 
   auth_bucket = ports_create_bucket ();
+  if (!auth_bucket)
+    error (2, errno, "can't create auth bucket");
+
   authhandle_portclass = ports_create_class (&destroy_authhandle, 0);
+  if (!authhandle_portclass)
+    error (2, errno, "can't create authhandle portclass");
 
   /* Create the initial root auth handle.  */
   err = create_authhandle (&firstauth);
diff --git a/devnode/devnode.c b/devnode/devnode.c
index 3db098a..af3beff 100644
--- a/devnode/devnode.c
+++ b/devnode/devnode.c
@@ -361,8 +361,16 @@ main (int argc, char *argv[])
   const struct argp argp = { options, parse_opt, args_doc, doc };
 
   port_bucket = ports_create_bucket ();
+  if (!port_bucket)
+    error (1, errno, "can't create port bucket");
+
   trivfs_cntl_class = ports_create_class (trivfs_clean_cntl, 0);
+  if (!trivfs_cntl_class)
+    error (1, errno, "can't create trivfs cntl class");
+
   trivfs_protid_class = ports_create_class (trivfs_clean_protid, 0);
+  if (!trivfs_protid_class)
+    error (1, errno, "can't create trivfs protid class");
 
   argp_parse (&argp, argc, argv, 0, 0, 0);
 
diff --git a/eth-multiplexer/multiplexer.c b/eth-multiplexer/multiplexer.c
index ca674b4..2282727 100644
--- a/eth-multiplexer/multiplexer.c
+++ b/eth-multiplexer/multiplexer.c
@@ -131,8 +131,16 @@ main (int argc, char *argv[])
   pthread_t t;
 
   port_bucket = ports_create_bucket ();
+  if (!port_bucket)
+    error (1, errno, "can't create port bucket");
+
   other_portclass = ports_create_class (0, 0);
+  if (!other_portclass)
+    error (1, errno, "can't create other portclass");
+
   vdev_portclass = ports_create_class (destroy_vdev, 0);
+  if (!vdev_portclass)
+    error (1, errno, "can't create vdev portclass");
 
   argp_parse (&argp, argc, argv, 0, 0, 0);
 
diff --git a/exec/main.c b/exec/main.c
index b6d2b09..ae93c5b 100644
--- a/exec/main.c
+++ b/exec/main.c
@@ -235,6 +235,8 @@ main (int argc, char **argv)
     error (1, 0, "error creating protid port class");
 
   execboot_portclass = ports_create_class (deadboot, NULL);
+  if (!execboot_portclass)
+    error (1, errno, "can't create execboot portclass");
 
   /* Reply to our parent.  */
   err = trivfs_startup (bootstrap, 0,
diff --git a/ext2fs/pager.c b/ext2fs/pager.c
index 71de4eb..3fc1f64 100644
--- a/ext2fs/pager.c
+++ b/ext2fs/pager.c
@@ -1433,6 +1433,8 @@ create_disk_pager (void)
     ext2_panic ("can't create disk pager: %s", strerror (errno));
   upi->type = DISK;
   disk_pager_bucket = ports_create_bucket ();
+  if (!disk_pager_bucket)
+    ext2_panic ("can't create disk pager bucket: %s", strerror (errno));
   get_hypermetadata ();
   disk_cache_blocks = DISK_CACHE_BLOCKS;
   disk_cache_size = disk_cache_blocks << log2_block_size;
@@ -1442,6 +1444,8 @@ create_disk_pager (void)
 
   /* The file pager.  */
   file_pager_bucket = ports_create_bucket ();
+  if (!file_pager_bucket)
+    ext2_panic ("can't create file pager bucket: %s", strerror (errno));
 
   /* Start libpagers worker threads.  */
   err = pager_start_workers (file_pager_bucket, &file_pager_requests);
diff --git a/fatfs/pager.c b/fatfs/pager.c
index 88e014d..f1169e4 100644
--- a/fatfs/pager.c
+++ b/fatfs/pager.c
@@ -781,12 +781,17 @@ create_fat_pager (void)
 
   upi->type = FAT;
   disk_pager_bucket = ports_create_bucket ();
+  if (!disk_pager_bucket)
+    error (2, errno, "can't create disk pager bucket");
+
   diskfs_start_disk_pager (upi, disk_pager_bucket, MAY_CACHE, 0,
 			   bytes_per_sector * sectors_per_fat,
 			   &fat_image);
 
   /* The file pager.  */
   file_pager_bucket = ports_create_bucket ();
+  if (!file_pager_bucket)
+    error (2, errno, "can't create file pager bucket");
 
   /* Start libpagers worker threads.  */
   err = pager_start_workers (file_pager_bucket, &file_pager_requests);
diff --git a/isofs/pager.c b/isofs/pager.c
index 7b36f36..21bac67 100644
--- a/isofs/pager.c
+++ b/isofs/pager.c
@@ -151,6 +151,8 @@ create_disk_pager (void)
   upi->type = DISK;
   upi->np = 0;
   pager_bucket = ports_create_bucket ();
+  if (!pager_bucket)
+    error(1, errno, "can't create pager bucket");
   diskfs_start_disk_pager (upi, pager_bucket, 1, 0, store->size, &disk_image);
   disk_image_len = store->size;
   upi->p = diskfs_disk_pager;
diff --git a/libdiskfs/init-init.c b/libdiskfs/init-init.c
index f9b12f6..3054434 100644
--- a/libdiskfs/init-init.c
+++ b/libdiskfs/init-init.c
@@ -90,11 +90,24 @@ diskfs_init_diskfs (void)
   diskfs_auth_server_port = getauth ();
 
   diskfs_protid_class = ports_create_class (diskfs_protid_rele, 0);
+  if (!diskfs_protid_class)
+    return errno;
+
   diskfs_control_class = ports_create_class (_diskfs_control_clean, 0);
+  if (!diskfs_control_class)
+    return errno;
+
   diskfs_execboot_class = ports_create_class (0, 0);
+  if (!diskfs_execboot_class)
+    return errno;
+
   diskfs_shutdown_notification_class = ports_create_class (0, 0);
+  if (!diskfs_shutdown_notification_class)
+    return errno;
 
   diskfs_port_bucket = ports_create_bucket ();
+  if (!diskfs_port_bucket)
+    return errno;
 
   _hurd_port_init (&_diskfs_exec_portcell, MACH_PORT_NULL);
 
diff --git a/libfshelp/get-identity.c b/libfshelp/get-identity.c
index d6856e4..9200925 100644
--- a/libfshelp/get-identity.c
+++ b/libfshelp/get-identity.c
@@ -86,6 +86,7 @@ id_initialize (void)
 {
   assert_backtrace (!idclass);
   idclass = ports_create_class (NULL, id_clean);
+  assert_backtrace (idclass);
 }
 
 error_t
diff --git a/libmachdev/ds_routines.c b/libmachdev/ds_routines.c
index cdb820f..b06efc1 100644
--- a/libmachdev/ds_routines.c
+++ b/libmachdev/ds_routines.c
@@ -324,7 +324,10 @@ machdev_device_init(void)
   int i;
 
   machdev_device_bucket = ports_create_bucket ();
+  assert_backtrace (machdev_device_bucket);
+
   machdev_device_class = ports_create_class (0, 0);
+  assert_backtrace (machdev_device_class);
 
   for (i = 0; i < num_emul; i++)
     {
diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c
index fec83bc..b57f0fb 100644
--- a/libmachdev/trivfs_server.c
+++ b/libmachdev/trivfs_server.c
@@ -334,6 +334,8 @@ arrange_shutdown_notification (void)
   struct port_info *pi;
 
   machdev_shutdown_notify_class = ports_create_class (0, 0);
+  if (!machdev_shutdown_notify_class)
+    return;
 
   /* Arrange to get notified when the system goes down */
   err = ports_create_port (machdev_shutdown_notify_class, port_bucket,
@@ -420,8 +422,17 @@ machdev_trivfs_init(int argc, char **argv, mach_port_t bootstrap_resume_task,
 {
   mach_port_t mybootstrap = MACH_PORT_NULL;
   port_bucket = ports_create_bucket ();
+  if (!port_bucket)
+    error (1, errno, "can't create port bucket");
+
   trivfs_cntl_class = ports_create_class (trivfs_clean_cntl, 0);
+  if (!trivfs_cntl_class)
+    error (1, errno, "can't create trivfs cntl class");
+
   trivfs_protid_class = ports_create_class (trivfs_clean_protid, 0);
+  if (!trivfs_protid_class)
+    error (1, errno, "can't create trivfs protid class");
+
   trivfs_create_control (MACH_PORT_NULL, trivfs_cntl_class, port_bucket,
                          trivfs_protid_class, 0, &control);
 
diff --git a/libnetfs/init-init.c b/libnetfs/init-init.c
index 1b06260..2d7fd28 100644
--- a/libnetfs/init-init.c
+++ b/libnetfs/init-init.c
@@ -45,8 +45,17 @@ netfs_init (void)
     error (2, err, "mapping time");
 
   netfs_protid_class = ports_create_class (netfs_release_protid, 0);
+  if (!netfs_protid_class)
+    error (2, errno, "can't create netfs protid class");
+
   netfs_control_class = ports_create_class (0, 0);
+  if (!netfs_control_class)
+    error (2, errno, "can't create netfs control class");
+
   netfs_port_bucket = ports_create_bucket ();
+  if (!netfs_port_bucket)
+    error (2, errno, "can't create netfs port bucket");
+
   netfs_auth_server_port = getauth ();
   err = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE,
 			    &netfs_fsys_identity);
diff --git a/libpager/pager-create.c b/libpager/pager-create.c
index 78c0400..386ed9b 100644
--- a/libpager/pager-create.c
+++ b/libpager/pager-create.c
@@ -92,5 +92,6 @@ static void
 create_class (void)
 {
   _pager_class = ports_create_class (_pager_clean, _pager_real_dropweak);
+  assert_backtrace (_pager_class);
   (void) &create_class;		/* Avoid warning */
 }
diff --git a/libports/create-bucket.c b/libports/create-bucket.c
index 1095332..4c82786 100644
--- a/libports/create-bucket.c
+++ b/libports/create-bucket.c
@@ -31,6 +31,7 @@ static void
 init_notify_port_class (void)
 {
   notify_port_class = ports_create_class (NULL, NULL);
+  assert_backtrace (notify_port_class);
 }
 
 struct port_bucket *
diff --git a/lwip/main.c b/lwip/main.c
index f52f80f..397e096 100644
--- a/lwip/main.c
+++ b/lwip/main.c
@@ -201,8 +201,17 @@ main (int argc, char **argv)
   mach_port_t bootstrap;
 
   lwip_bucket = ports_create_bucket ();
+  if (!lwip_bucket)
+    error (1, errno, "can't create lwip bucket");
+
   addrport_class = ports_create_class (clean_addrport, 0);
+  if (!addrport_class)
+    error (1, errno, "can't create addrport class");
+
   socketport_class = ports_create_class (clean_socketport, 0);
+  if (!socketport_class)
+    error (1, errno, "can't create socketport class");
+
   lwip_bootstrap_portclass = PORTCLASS_INET;
 
   err = mach_port_allocate (mach_task_self (),
diff --git a/lwip/port/netif/hurdethif.c b/lwip/port/netif/hurdethif.c
index 9ef5cf7..2127b33 100644
--- a/lwip/port/netif/hurdethif.c
+++ b/lwip/port/netif/hurdethif.c
@@ -553,7 +553,12 @@ hurdethif_module_init (void)
 {
   error_t err;
   etherport_bucket = ports_create_bucket ();
+  if (!etherport_bucket)
+    perror ("ports_create_bucket");
+
   etherread_class = ports_create_class (0, 0);
+  if (!etherread_class)
+    perror ("ports_create_class");
 
   err = pthread_create (&input_thread, 0, hurdethif_input_thread, 0);
   if (!err)
diff --git a/lwip/startup.c b/lwip/startup.c
index 262dee5..ab0c134 100644
--- a/lwip/startup.c
+++ b/lwip/startup.c
@@ -45,6 +45,8 @@ arrange_shutdown_notification (void)
   struct port_info *pi;
 
   shutdown_notify_class = ports_create_class (0, 0);
+  if (!shutdown_notify_class)
+    return;
 
   signal (SIGTERM, sigterm_handler);
 
diff --git a/pfinet/ethernet.c b/pfinet/ethernet.c
index 132513d..058b1d4 100644
--- a/pfinet/ethernet.c
+++ b/pfinet/ethernet.c
@@ -182,7 +182,12 @@ ethernet_initialize (void)
   pthread_t thread;
   error_t err;
   etherport_bucket = ports_create_bucket ();
+  if (!etherport_bucket)
+    perror ("ports_create_bucket");
+
   etherreadclass = ports_create_class (0, 0);
+  if (!etherreadclass)
+    perror ("ports_create_class");
 
   err = pthread_create (&thread, NULL, ethernet_thread, NULL);
   if (!err)
diff --git a/pfinet/main.c b/pfinet/main.c
index 5d9a112..0b6735c 100644
--- a/pfinet/main.c
+++ b/pfinet/main.c
@@ -176,6 +176,8 @@ arrange_shutdown_notification (void)
   struct port_info *pi;
 
   shutdown_notify_class = ports_create_class (0, 0);
+  if (!shutdown_notify_class)
+    return;
 
   signal (SIGTERM, sigterm_handler);
 
@@ -294,8 +296,17 @@ main (int argc,
   pthread_t thread;
 
   pfinet_bucket = ports_create_bucket ();
+  if (!pfinet_bucket)
+    error (1, errno, "can't create pfinet bucket");
+
   addrport_class = ports_create_class (clean_addrport, 0);
+  if (!addrport_class)
+    error (1, errno, "can't create addrport class");
+
   socketport_class = ports_create_class (clean_socketport, 0);
+  if (!socketport_class)
+    error (1, errno, "can't create socketport class");
+
   err = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE,
 			    &fsys_identity);
   if (err)
diff --git a/pflocal/sock.c b/pflocal/sock.c
index 20f127f..6adfbd7 100644
--- a/pflocal/sock.c
+++ b/pflocal/sock.c
@@ -502,8 +502,17 @@ error_t
 sock_global_init (void)
 {
   sock_port_bucket = ports_create_bucket ();
+  if (!sock_port_bucket)
+    return errno;
+
   sock_user_port_class = ports_create_class (sock_user_clean, NULL);
+  if (!sock_user_port_class)
+    return errno;
+
   addr_port_class = ports_create_class (addr_clean, addr_unbind);
+  if (!addr_port_class)
+    return errno;
+
   return 0;
 }
 
diff --git a/proc/main.c b/proc/main.c
index e2c5f1a..a6f12ad 100644
--- a/proc/main.c
+++ b/proc/main.c
@@ -185,9 +185,21 @@ main (int argc, char **argv, char **envp)
     error (2, 0, "proc server can only be run by startup during boot");
 
   proc_bucket = ports_create_bucket ();
+  if (!proc_bucket)
+    error (2, errno, "can't create proc bucket");
+
   proc_class = ports_create_class (0, 0);
+  if (!proc_class)
+    error (2, errno, "can't create proc class");
+
   generic_port_class = ports_create_class (0, 0);
+  if (!generic_port_class)
+    error (2, errno, "can't create generic port class");
+
   exc_class = ports_create_class (exc_clean, 0);
+  if (!exc_class)
+    error (2, errno, "can't create exc class");
+
   ports_create_port (generic_port_class, proc_bucket,
 		     sizeof (struct port_info), &genport);
   generic_port = ports_get_right (genport);
@@ -197,6 +209,7 @@ main (int argc, char **argv, char **envp)
 
   /* Create the startup proc object for /hurd/startup (PID 2).  */
   startup_proc = allocate_proc (MACH_PORT_NULL);
+  assert_backtrace (startup_proc);
   startup_proc->p_deadmsg = 1;
   complete_proc (startup_proc, HURD_PID_STARTUP);
 
diff --git a/storeio/pager.c b/storeio/pager.c
index 7a26efa..61f3512 100644
--- a/storeio/pager.c
+++ b/storeio/pager.c
@@ -143,32 +143,40 @@ pager_clear_user_data (struct user_pager_info *upi)
 
 static struct port_bucket *pager_port_bucket = 0;
 static struct pager_requests *pager_requests;
+static int dev_pading_success = 0;
 
 /* Initialize paging for this device.  */
-static void
+static error_t
 init_dev_paging (void)
 {
-  if (! pager_port_bucket)
+  error_t err = 0;
+  if (!dev_pading_success)
     {
       static pthread_mutex_t pager_global_lock = PTHREAD_MUTEX_INITIALIZER;
 
       pthread_mutex_lock (&pager_global_lock);
-      if (pager_port_bucket == NULL)
+      if (!pager_port_bucket)
+	pager_port_bucket = ports_create_bucket ();
+
+      if (!pager_port_bucket)
 	{
-	  error_t err;
+	  err = errno;
+	  error (0, err, "ports_create_bucket");
+	  goto out;
+	}
 
-	  pager_port_bucket = ports_create_bucket ();
+      /* Start libpagers worker threads.  */
+      err = pager_start_workers (pager_port_bucket, &pager_requests);
+      if (err)
+	error (0, err, "pager_start_workers");
+      else
+	dev_pading_success = 1;
 
-	  /* Start libpagers worker threads.  */
-	  err = pager_start_workers (pager_port_bucket, &pager_requests);
-	  if (err)
-	    {
-	      errno = err;
-	      error (0, err, "pager_start_workers");
-	    }
-	}
+     out:
       pthread_mutex_unlock (&pager_global_lock);
     }
+
+  return err;
 }
 
 void
@@ -229,7 +237,9 @@ dev_get_memory_object (struct dev *dev, vm_prot_t prot, memory_object_t *memobj)
     {
       int created = 0;
 
-      init_dev_paging ();
+      err = init_dev_paging ();
+      if (err)
+	return err;
 
       pthread_mutex_lock (&dev->pager_lock);
 
diff --git a/term/devio.c b/term/devio.c
index 372d076..f71a811 100644
--- a/term/devio.c
+++ b/term/devio.c
@@ -111,7 +111,16 @@ devio_init (void)
     return err;
   mach_port_deallocate (mach_task_self (), host_priv);
   if (!phys_reply_class)
-  phys_reply_class = ports_create_class (0, 0);
+    {
+      phys_reply_class = ports_create_class (0, 0);
+      if (!phys_reply_class)
+	{
+	  err = errno;
+	  mach_port_deallocate (mach_task_self (), device_master);
+	  return err;
+	}
+    }
+
   return 0;
 }
 
diff --git a/term/main.c b/term/main.c
index 1e661da..8f815c4 100644
--- a/term/main.c
+++ b/term/main.c
@@ -346,6 +346,8 @@ main (int argc, char **argv)
   int openmode;
 
   term_bucket = ports_create_bucket ();
+  if (!term_bucket)
+    error (1, errno, "can't create term bucket");
 
   trivfs_add_control_port_class (&tty_cntl_class);
   trivfs_add_control_port_class (&pty_cntl_class);
@@ -353,6 +355,8 @@ main (int argc, char **argv)
   trivfs_add_protid_port_class (&pty_class);
 
   cttyid_class = ports_create_class (0, 0);
+  if (!cttyid_class)
+    error (1, errno, "can't create cttyid class");
 
   init_users ();
 
diff --git a/trans/crash.c b/trans/crash.c
index 2e0ded2..0d3d8b8 100644
--- a/trans/crash.c
+++ b/trans/crash.c
@@ -761,6 +761,8 @@ main (int argc, char **argv)
   procserver = getproc ();
 
   crasher_portclass = ports_create_class (dead_crasher, 0);
+  if (!crasher_portclass)
+    error (1, errno, "can't create crasher portclass");
 
   err = trivfs_add_control_port_class (&trivfs_control_class);
   if (err)
diff --git a/trans/ifsock.c b/trans/ifsock.c
index f14b5e7..9b0e7e4 100644
--- a/trans/ifsock.c
+++ b/trans/ifsock.c
@@ -78,8 +78,16 @@ main (int argc, char **argv)
   argp_parse (&argp, argc, argv, 0, 0, 0);
 
   control_class = ports_create_class (trivfs_clean_cntl, 0);
+  if (!control_class)
+    error (1, errno, "can't create control class");
+
   node_class = ports_create_class (trivfs_clean_protid, 0);
+  if (!node_class)
+    error (1, errno, "can't create node class");
+
   port_bucket = ports_create_bucket ();
+  if (!port_bucket)
+    error (1, errno, "can't create port bucket");
 
   task_get_bootstrap_port (mach_task_self (), &bootstrap);
   if (bootstrap == MACH_PORT_NULL)
diff --git a/trans/random.c b/trans/random.c
index b358821..39f74d2 100644
--- a/trans/random.c
+++ b/trans/random.c
@@ -658,6 +658,8 @@ arrange_shutdown_notification (void)
   struct port_info *pi;
 
   shutdown_notify_class = ports_create_class (0, 0);
+  if (!shutdown_notify_class)
+    return errno;
 
   if (signal (SIGTERM, sigterm_handler) == SIG_ERR)
     return errno;
diff --git a/trans/streamio.c b/trans/streamio.c
index 57bbf04..c35fef7 100644
--- a/trans/streamio.c
+++ b/trans/streamio.c
@@ -304,6 +304,8 @@ main (int argc, char *argv[])
     error (2, 0, "Must be started as a translator");
 
   streamdev_bucket = ports_create_bucket ();
+  if (!streamdev_bucket)
+    error (2, errno, "can't create streamdev bucket");
 
   err = trivfs_startup (bootstrap, 0,
 			0, streamdev_bucket, 0, streamdev_bucket,
@@ -831,6 +833,12 @@ dev_open (const char *name, dev_mode_t mode)
     return err;
 
   phys_reply_class = ports_create_class (0, 0);
+  if (!phys_reply_class)
+    {
+      err = errno;
+      goto device_master_deallocate;
+    }
+
   err = ports_create_port (phys_reply_class, streamdev_bucket,
 			   sizeof (struct port_info), &phys_reply_pi);
   if (err)
diff --git a/utils/fakeauth.c b/utils/fakeauth.c
index 7180bb3..0d64f2b 100644
--- a/utils/fakeauth.c
+++ b/utils/fakeauth.c
@@ -364,7 +364,12 @@ believe it has restricted them to different identities or no identity at all.\
   argp_parse (&argp, argc, argv, ARGP_IN_ORDER, &argi, 0);
 
   auth_bucket = ports_create_bucket ();
+  if (!auth_bucket)
+    error (2, errno, "can't create auth bucket");
+
   authhandle_portclass = ports_create_class (&destroy_authhandle, 0);
+  if (!authhandle_portclass)
+    error (2, errno, "can't create authhandle portclass");
 
   /* Create the initial root auth handle.  */
   err = create_authhandle (&firstauth);
diff --git a/utils/rpctrace.c b/utils/rpctrace.c
index d8dc0ca..3601206 100644
--- a/utils/rpctrace.c
+++ b/utils/rpctrace.c
@@ -1852,8 +1852,17 @@ main (int argc, char **argv, char **envp)
   setlinebuf (ostream);
 
   traced_bucket = ports_create_bucket ();
+  if (!traced_bucket)
+    error (1, errno, "can't create traced bucket");
+
   traced_class = ports_create_class (&traced_clean, NULL);
+  if (!traced_class)
+    error (1, errno, "can't create traced class");
+
   other_class = ports_create_class (0, 0);
+  if (!other_class)
+    error (1, errno, "can't create other class");
+
   err = ports_create_port (other_class, traced_bucket,
 			   sizeof (*notify_pi), &notify_pi);
   assert_perror_backtrace (err);
-- 
2.43.0

Reply via email to