]> git.puffer.fish Git - matthieu/frr.git/commitdiff
2003-12-23 Krzysztof Oledzki <oleq@ans.pl>
authorgdt <gdt>
Tue, 23 Dec 2003 17:34:39 +0000 (17:34 +0000)
committergdt <gdt>
Tue, 23 Dec 2003 17:34:39 +0000 (17:34 +0000)
        * bgp_network.c: drop privs on error cases

(from [quagga-dev 438])

bgpd/ChangeLog
bgpd/bgp_network.c

index c97dbcef08d6f0006e5bfead600fcac301f2ec6a..428c2b938adeb0aae87f77b9c897a7c6494a2313 100644 (file)
@@ -1,3 +1,7 @@
+2003-12-23 Krzysztof Oledzki <oleq@ans.pl>
+
+       * bgp_network.c: drop privs on error cases
+
 2003-08-11 kunihiro <kunihiro@zebra.org
 
        * bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with
index 019b78b7c3103c00e77953d9c4cd302ffed95e99..1590b99f7b69c67bcb29c1e89e22af73a417a603 100644 (file)
@@ -279,7 +279,7 @@ bgp_getsockname (struct peer *peer)
 int
 bgp_socket (struct bgp *bgp, unsigned short port)
 {
-  int ret;
+  int ret, en;
   struct addrinfo req;
   struct addrinfo *ainfo;
   struct addrinfo *ainfo_save;
@@ -322,16 +322,17 @@ bgp_socket (struct bgp *bgp, unsigned short port)
         zlog_err ("bgp_socket: could not raise privs");
 
       ret = bind (sock, ainfo->ai_addr, ainfo->ai_addrlen);
+      en = errno;
+      if (bgpd_privs.change (ZPRIVS_LOWER) )
+       zlog_err ("bgp_bind_address: could not lower privs");
+
       if (ret < 0)
        {
-         zlog_err ("bind: %s", strerror (errno));
-         close (sock);
+         zlog_err ("bind: %s", strerror (en));
+         close(sock);
          continue;
        }
       
-      if (bgpd_privs.change (ZPRIVS_LOWER) )
-        zlog_err ("bgp_bind_address: could not lower privs");
-        
       ret = listen (sock, 3);
       if (ret < 0) 
        {
@@ -381,16 +382,18 @@ bgp_socket (struct bgp *bgp, unsigned short port)
     zlog_err ("bgp_socket: could not raise privs");
 
   ret = bind (sock, (struct sockaddr *) &sin, socklen);
+  en = errno;
+
+  if (bgpd_privs.change (ZPRIVS_LOWER) )
+    zlog_err ("bgp_socket: could not lower privs");
+
   if (ret < 0)
     {
-      zlog_err ("bind: %s", strerror (errno));
+      zlog_err ("bind: %s", strerror (en));
       close (sock);
       return ret;
     }
   
-  if (bgpd_privs.change (ZPRIVS_LOWER) )
-    zlog_err ("bgp_socket: could not lower privs");
-    
   ret = listen (sock, 3);
   if (ret < 0) 
     {