2003-12-23 Krzysztof Oledzki <oleq@ans.pl>

* bgp_network.c: drop privs on error cases

(from [quagga-dev 438])
This commit is contained in:
gdt 2003-12-23 17:34:39 +00:00
parent 9f1b6db9b5
commit 10d60ad1ca
2 changed files with 17 additions and 10 deletions

View 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 2003-08-11 kunihiro <kunihiro@zebra.org
* bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with * bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with

View File

@ -279,7 +279,7 @@ bgp_getsockname (struct peer *peer)
int int
bgp_socket (struct bgp *bgp, unsigned short port) bgp_socket (struct bgp *bgp, unsigned short port)
{ {
int ret; int ret, en;
struct addrinfo req; struct addrinfo req;
struct addrinfo *ainfo; struct addrinfo *ainfo;
struct addrinfo *ainfo_save; struct addrinfo *ainfo_save;
@ -322,16 +322,17 @@ bgp_socket (struct bgp *bgp, unsigned short port)
zlog_err ("bgp_socket: could not raise privs"); zlog_err ("bgp_socket: could not raise privs");
ret = bind (sock, ainfo->ai_addr, ainfo->ai_addrlen); 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) if (ret < 0)
{ {
zlog_err ("bind: %s", strerror (errno)); zlog_err ("bind: %s", strerror (en));
close (sock); close(sock);
continue; continue;
} }
if (bgpd_privs.change (ZPRIVS_LOWER) )
zlog_err ("bgp_bind_address: could not lower privs");
ret = listen (sock, 3); ret = listen (sock, 3);
if (ret < 0) if (ret < 0)
{ {
@ -381,16 +382,18 @@ bgp_socket (struct bgp *bgp, unsigned short port)
zlog_err ("bgp_socket: could not raise privs"); zlog_err ("bgp_socket: could not raise privs");
ret = bind (sock, (struct sockaddr *) &sin, socklen); 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) if (ret < 0)
{ {
zlog_err ("bind: %s", strerror (errno)); zlog_err ("bind: %s", strerror (en));
close (sock); close (sock);
return ret; return ret;
} }
if (bgpd_privs.change (ZPRIVS_LOWER) )
zlog_err ("bgp_socket: could not lower privs");
ret = listen (sock, 3); ret = listen (sock, 3);
if (ret < 0) if (ret < 0)
{ {