]> git.puffer.fish Git - mirror/frr.git/commitdiff
2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
authorajs <ajs>
Sat, 29 Jan 2005 17:07:40 +0000 (17:07 +0000)
committerajs <ajs>
Sat, 29 Jan 2005 17:07:40 +0000 (17:07 +0000)
* if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
  zserv_privs.change.
* ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
  zserv_privs.change.
* ipforward_solaris.c: (solaris_nd) Save errno before calling
  zserv_privs.change.
* irdp_main.c: (irdp_sock_init) Save errno before calling
  zserv_privs.change.

[backport candidate]

zebra/ChangeLog
zebra/if_ioctl_solaris.c
zebra/ioctl.c
zebra/ioctl_solaris.c
zebra/ipforward_solaris.c
zebra/irdp_main.c

index a7286f9d09205f121cba7c806d429fd9bc746dc4..0ebe7052c79821da97c37790e7663990a36f49cc 100644 (file)
@@ -1,3 +1,14 @@
+2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
+         zserv_privs.change.
+       * ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
+         zserv_privs.change.
+       * ipforward_solaris.c: (solaris_nd) Save errno before calling
+         zserv_privs.change.
+       * irdp_main.c: (irdp_sock_init) Save errno before calling
+         zserv_privs.change.
+
 2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
        * rt_netlink.c: (netlink_socket,netlink_request,netlink_parse_info,
index 1cbf555eb5c54a459930bae60221c742efd3d0d8..38ac5a71d6d64f96c03b71dd86eae26a50f4ec38 100644 (file)
@@ -50,6 +50,7 @@ interface_list_ioctl (int af)
   struct lifconf lifconf;
   struct interface *ifp;
   int n;
+  int save_errno;
   size_t needed, lastneeded = 0;
   char *buf = NULL;
 
@@ -72,6 +73,7 @@ calculate_lifc_len:     /* must hold privileges to enter here */
   lifn.lifn_family = af;
   lifn.lifn_flags = 0;
   ret = ioctl (sock, SIOCGLIFNUM, &lifn);
+  save_errno = errno;
   
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
@@ -79,7 +81,7 @@ calculate_lifc_len:     /* must hold privileges to enter here */
   if (ret < 0)
     {
       zlog_warn ("interface_list_ioctl: SIOCGLIFNUM failed %s",
-                 safe_strerror (errno));
+                 safe_strerror (save_errno));
       close (sock);
       return -1;
     }
index eca0e76937cf463471f000481149c48ef4efc326..e28d359efb0b0ff3aab6898899b9ab89102bbca3 100644 (file)
@@ -46,8 +46,8 @@ int
 if_ioctl (u_long request, caddr_t buffer)
 {
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -59,13 +59,10 @@ if_ioctl (u_long request, caddr_t buffer)
       perror ("socket");
       exit (1);
     }
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
   
   if (ret < 0) 
@@ -81,8 +78,8 @@ int
 if_ioctl_ipv6 (u_long request, caddr_t buffer)
 {
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -95,14 +92,10 @@ if_ioctl_ipv6 (u_long request, caddr_t buffer)
       exit (1);
     }
 
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
   
   if (ret < 0) 
index 8ebd0f41d00faff29d3d2af94d1b10f3a1e8fced..5ec327acdcfafe28f1f865b13cace0a81b676900 100644 (file)
@@ -46,8 +46,8 @@ int
 if_ioctl (u_long request, caddr_t buffer)
 {
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -61,15 +61,12 @@ if_ioctl (u_long request, caddr_t buffer)
       exit (1);
     }
 
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
   
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
 
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
 
   if (ret < 0)
@@ -86,8 +83,8 @@ if_ioctl_ipv6 (u_long request, caddr_t buffer)
 {
 #ifdef HAVE_IPV6
   int sock;
-  int ret = 0;
-  int err = 0;
+  int ret;
+  int err;
 
   if (zserv_privs.change(ZPRIVS_RAISE))
     zlog (NULL, LOG_ERR, "Can't raise privileges");
@@ -101,15 +98,12 @@ if_ioctl_ipv6 (u_long request, caddr_t buffer)
       exit (1);
     }
 
-  ret = ioctl (sock, request, buffer);
+  if ((ret = ioctl (sock, request, buffer)) < 0)
+    err = errno;
 
   if (zserv_privs.change(ZPRIVS_LOWER))
     zlog (NULL, LOG_ERR, "Can't lower privileges");
 
-  if (ret < 0)
-    {
-      err = errno;
-    }
   close (sock);
 
   if (ret < 0)
index 2eaf34168bf5f2b6b7e06533c646481a5afde369..3ad2c400d41a494820fba73076f8e995a337724e 100644 (file)
@@ -87,10 +87,12 @@ solaris_nd(const int cmd, const char* parameter, const int value)
     }
   if (ioctl (fd, I_STR, &strioctl) < 0) 
     {
+      int save_errno = errno;
       if ( zserv_privs.change (ZPRIVS_LOWER) )
         zlog_err ("solaris_nd: Can't lower privileges");
       close (fd);
-      zlog_warn("ioctl I_STR failed on device %s - %s", device,safe_strerror(errno));
+      zlog_warn("ioctl I_STR failed on device %s - %s",
+               device, safe_strerror(save_errno));
       return -1;
     }
   close(fd);
index 8c164486001bd435dca404b3023a7c3e26658625..0db2a54da5fa13170b8a2f7d9788c776b7ce3889 100644 (file)
@@ -101,19 +101,21 @@ int
 irdp_sock_init (void)
 {
   int ret, i;
+  int save_errno;
 
   if ( zserv_privs.change (ZPRIVS_RAISE) )
        zlog_err ("irdp_sock_init: could not raise privs, %s",
                   safe_strerror (errno) );
 
   irdp_sock = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);
+  save_errno = errno;
 
   if ( zserv_privs.change (ZPRIVS_LOWER) )
        zlog_err ("irdp_sock_init: could not lower privs, %s",
              safe_strerror (errno) );
 
   if (irdp_sock < 0) {
-    zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(errno));
+    zlog_warn ("IRDP: can't create irdp socket %s", safe_strerror(save_errno));
     return irdp_sock;
   };