]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Avoid segfault with address manipulation functions
authorEric Bollengier <eric@baculasystems.com>
Fri, 21 Aug 2020 14:06:28 +0000 (16:06 +0200)
committerEric Bollengier <eric@baculasystems.com>
Tue, 1 Mar 2022 14:36:17 +0000 (15:36 +0100)
bacula/src/lib/address_conf.c

index 62d8cfb813a4971975fe9f87e5d49151fc5b5330..5ca569b9d55b6481bc79852d8ae31244b8fba8b3 100644 (file)
@@ -243,7 +243,12 @@ const char *build_addresses_str(dlist *addrs, char *buf, int blen)
 
 const char *get_first_address(dlist *addrs, char *outputbuf, int outlen)
 {
-   return ((IPADDR *)(addrs->first()))->get_address(outputbuf, outlen);
+   IPADDR *addr = (IPADDR *)(addrs->first());
+   if (addr) {
+      return addr->get_address(outputbuf, outlen);
+   } else {
+      return _("N/A");
+   }
 }
 
 int get_first_port_net_order(dlist *addrs)
@@ -251,7 +256,12 @@ int get_first_port_net_order(dlist *addrs)
    if (!addrs) {
       return 0;
    } else {
-      return ((IPADDR *)(addrs->first()))->get_port_net_order();
+      IPADDR *addr = (IPADDR *)(addrs->first());
+      if (addr) {
+         return addr->get_port_net_order();
+      } else {
+         return 0;
+      }
    }
 }
 
@@ -260,7 +270,12 @@ int get_first_port_host_order(dlist *addrs)
    if (!addrs) {
       return 0;
    } else {
-      return ((IPADDR *)(addrs->first()))->get_port_host_order();
+      IPADDR *addr = (IPADDR *)(addrs->first());
+      if (addr) {
+         return addr->get_port_host_order();
+      } else {
+         return 0;
+      }
    }
 }