diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 99599f5..4663951 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-11 Paul Jakma <paul.jakma@sun.com>
+
+	* ospf_vty.c: (general) Audit ospf_lookup calls in commands,
+	  ensure check for NULL result, make vty messages consistent. 
+	  (show_ip_ospf_interface) Missing NULL check on ospf_lookup
+	  result, fixes Coverity CID #70.
+
 2006-04-24 Paul Jakma <paul.jakma@sun.com>
 
 	* (general) More Virtual-link fixes, again with much help in
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 74361bc..c5a69dc 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -2860,6 +2860,11 @@
   struct listnode *node;
 
   ospf = ospf_lookup ();
+  if (ospf == NULL)
+    {
+      vty_out (vty, "OSPF Routing Process not enabled%s", VTY_NEWLINE);
+      return CMD_SUCCESS;
+    }
 
   /* Show All Interfaces. */
   if (argc == 0)
@@ -3976,7 +3981,10 @@
 
   ospf = ospf_lookup ();
   if (ospf == NULL)
-    return CMD_SUCCESS;
+    {
+      vty_out (vty, " OSPF Routing Process not enabled%s", VTY_NEWLINE);
+      return CMD_SUCCESS;
+    }
 
   vty_out (vty, "%s       OSPF Router with ID (%s)%s%s", VTY_NEWLINE,
            inet_ntoa (ospf->router_id), VTY_NEWLINE, VTY_NEWLINE);
@@ -4114,7 +4122,10 @@
 
   ospf = ospf_lookup ();
   if (ospf == NULL)
-    return CMD_SUCCESS;
+    {
+      vty_out (vty, " OSPF Routing Process not enabled%s", VTY_NEWLINE);
+      return CMD_SUCCESS;
+    }
 
   vty_out (vty, "%s       OSPF Router with ID (%s)%s%s", VTY_NEWLINE,
            inet_ntoa (ospf->router_id), VTY_NEWLINE, VTY_NEWLINE);
@@ -4736,10 +4747,7 @@
   struct ospf_if_params *params;
   struct ospf_interface *oi;
   struct route_node *rn;
-  struct ospf *ospf;
       
-  ospf = ospf_lookup ();
-
   params = IF_DEF_PARAMS (ifp);
   
   if (nbr_str)
@@ -4787,7 +4795,8 @@
   /* Update timer values in neighbor structure. */
   if (nbr_str)
     {
-      if (ospf)
+      struct ospf *ospf;
+      if ((ospf = ospf_lookup()))
 	{
 	  oi = ospf_if_lookup_by_local_addr (ospf, ifp, addr);
 	  if (oi)
@@ -4877,9 +4886,6 @@
   struct ospf_if_params *params;
   struct ospf_interface *oi;
   struct route_node *rn;
-  struct ospf *ospf;
-  
-  ospf = ospf_lookup ();
 
   ifp = vty->index;
   params = IF_DEF_PARAMS (ifp);
@@ -4914,7 +4920,9 @@
   /* Update timer values in neighbor structure. */
   if (argc == 1)
     {
-      if (ospf)
+      struct ospf *ospf;
+      
+      if ((ospf = ospf_lookup()))
 	{
 	  oi = ospf_if_lookup_by_local_addr (ospf, ifp, addr);
 	  if (oi)
@@ -7138,10 +7146,9 @@
 {
   struct ospf *ospf;
 
-  ospf = ospf_lookup ();
-  if (ospf == NULL)
+  if ((ospf = ospf_lookup ()) == NULL)
     {
-      vty_out (vty, "OSPF is not enabled%s", VTY_NEWLINE);
+      vty_out (vty, " OSPF Routing Process not enabled%s", VTY_NEWLINE);
       return CMD_SUCCESS;
     }
 
@@ -7170,10 +7177,9 @@
 {
   struct ospf *ospf;
 
-  ospf = ospf_lookup ();
-  if (ospf == NULL)
+  if ((ospf = ospf_lookup ()) == NULL)
     {
-      vty_out (vty, "OSPF is not enabled%s", VTY_NEWLINE);
+      vty_out (vty, " OSPF Routing Process not enabled%s", VTY_NEWLINE);
       return CMD_SUCCESS;
     }
 
