Index: trunk/src/sh_portcheck.c
===================================================================
--- trunk/src/sh_portcheck.c	(revision 590)
+++ trunk/src/sh_portcheck.c	(revision 592)
@@ -492,4 +492,5 @@
   struct sh_portentry * new = SH_ALLOC (sizeof(struct sh_portentry));
 
+  if (!new) return;
   new->port = port;
   sh_ipvx_ntoa(new->interface, SH_INTERFACE_SIZE, paddr);
@@ -1960,4 +1961,5 @@
 {
   struct added_dev * new = SH_ALLOC(sizeof(struct added_dev));
+  if (!new) return;
   sl_strlcpy(new->dev, buf, 64);
   new->next = dev_list;
@@ -2122,4 +2124,5 @@
 
   black = SH_ALLOC (sizeof(struct sh_port));
+  if (!black) return -1;
   black->paddr = SH_ALLOC (sizeof(struct sh_sockaddr));
   black->port  = port;
@@ -2189,4 +2192,5 @@
 
   transient = SH_ALLOC (sizeof(struct sh_port));
+  if (!transient) return -1;
   transient->paddr = SH_ALLOC (sizeof(struct sh_sockaddr));
   transient->port  = port;
@@ -2324,9 +2328,10 @@
   if (strchr(str, ':'))
     {
-      char *last = strrchr(str, ':');
+      const char *last = strrchr(str, ':');
       if (last != NULL)
 	{
 	  size_t tolast = (last - str);
 	  interface = SH_ALLOC(tolast+1);
+	  if (!interface) return -1;
 	  sl_strlcpy(interface, str, tolast+1);
 	  interface[tolast] = '\0';
@@ -2341,4 +2346,5 @@
     {
       interface = SH_ALLOC(8);
+      if (!interface) return -1;
       sl_strlcpy(interface, _("0.0.0.0"), 8);
       interface[7] = '\0';
