diff --git a/lib/privs.c b/lib/privs.c
index 174618a..0ee8d60 100644
--- a/lib/privs.c
+++ b/lib/privs.c
@@ -119,17 +119,16 @@
 zprivs_state_caps (void)
 {
   int i;
-  cap_flag_t flag;
   cap_flag_value_t val;
   
-  for (i=0; i < zprivs_state.syscaps_num_p; i++)
+  for (i=0; i < zprivs_state.sys_num_p; i++)
     {
       if ( cap_get_flag (zprivs_state.caps, zprivs_state.syscaps_p[i], 
                          CAP_EFFECTIVE, &val) )
         zlog_warn ("zprivs_state_caps: could not cap_get_flag, %s",
                     strerror (errno) );
       if (val == CAP_SET)
-        return CAP_RAISED;
+        return ZPRIVS_RAISED;
     }
   return ZPRIVS_LOWERED;
 }
@@ -219,7 +218,7 @@
   /* Tell kernel we want caps maintained across uid changes */
   if ( prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1 )
     {
-      zlog_err("privs_init: could not set PR_SET_KEEPCAPS, %s"
+      zlog_err("privs_init: could not set PR_SET_KEEPCAPS, %s",
                 strerror (errno) );
       exit(1);
     }
@@ -231,13 +230,13 @@
 
   if ( !(zprivs_state.caps = cap_init()) )
     {
-      zlog_err ("privs_init: failed to cap_init, %s" strerror (errno) );
+      zlog_err ("privs_init: failed to cap_init, %s", strerror (errno) );
       exit (1);
     }
   
   if ( cap_clear (zprivs_state.caps) )
     {
-      zlog_err ("privs_init: failed to cap_clear, %s" strerror (errno));
+      zlog_err ("privs_init: failed to cap_clear, %s", strerror (errno));
       exit (1);
     }
   
@@ -274,7 +273,7 @@
     {
       if ( setreuid (zprivs_state.zuid, zprivs_state.zuid) )
         {
-          zlog_err ("privs_init (cap): could not setreuid: %s", strerror (errno) );
+          zlog_err ("privs_init (cap): could not setreuid, %s", strerror (errno) );
           exit (1);
         }
      }
@@ -287,7 +286,7 @@
   				1, cap_setuid_value, CAP_CLEAR);
   if ( cap_set_proc (zprivs_state.caps) ) 
     {
-      zlog_err ("privs_init: cap_set_proc failed to clear cap_setuid, %s"
+      zlog_err ("privs_init: cap_set_proc failed to clear cap_setuid, %s",
                 strerror (errno) );
       exit (1);
     }
@@ -305,7 +304,7 @@
     {
       if ( setreuid (-1, zprivs_state.zuid) )
         {
-          zlog_err ("privs_init (uid): could not setreuid: %s", strerror (errno));
+          zlog_err ("privs_init (uid): could not setreuid, %s", strerror (errno));
           exit (1);
         }
     }
@@ -318,21 +317,23 @@
 void 
 zprivs_terminate (void)
 {
+
 #ifdef HAVE_LCAPS
-  if (zprivs_state)
-    cap_clear (zprivs_state.caps);
+
+  if (zprivs_state.caps)
+      cap_clear (zprivs_state.caps);
 
   if ( cap_set_proc (zprivs_state.caps) ) 
     {
-      zlog_err ("privs_terminate: cap_set_proc failed, %s"
+      zlog_err ("privs_terminate: cap_set_proc failed, %s",
                 strerror (errno) );
       exit (1);
     }  
 
-  if (zprivs_state.syscaps_num_p)
+  if (zprivs_state.sys_num_p)
     XFREE (MTYPE_PRIVS, zprivs_state.syscaps_p);
   
-  if (zprivs_state.syscaps_num_i)
+  if (zprivs_state.sys_num_i)
     XFREE (MTYPE_PRIVS, zprivs_state.syscaps_i);
   
   cap_free (zprivs_state.caps);
@@ -341,7 +342,7 @@
     {
       if ( setreuid (zprivs_state.zuid, zprivs_state.zuid) )
         {
-          zlog_err ("privs_terminate: could not setreuid: %s", 
+          zlog_err ("privs_terminate: could not setreuid, %s", 
                      strerror (errno) );
           exit (1);
         }
