From 90b68769a1a1d7623cae02be71b7a8e4094455ad Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Tue, 29 Jan 2008 17:26:34 +0000 Subject: [bgpd] fix crash on startup if compiled IPv4-only 2008-01-29 Jorge Boncompte * bgp_network.c: (bgp_socket) IPv4-only version crashes if -l is not used as address will be null. --- bgpd/ChangeLog | 5 +++++ bgpd/bgp_network.c | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'bgpd') diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 70bcc0fb..777801c3 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,8 @@ +2008-01-29 Jorge Boncompte + + * bgp_network.c: (bgp_socket) IPv4-only version crashes if -l is not + used as address will be null. + 2007-12-22 Paul Jakma * Fix series of vulnerabilities reported by "Mu Security diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 6b8c8a44..8452545d 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -296,7 +296,7 @@ bgp_socket (struct bgp *bgp, unsigned short port, char *address) req.ai_flags = AI_PASSIVE; req.ai_family = AF_UNSPEC; req.ai_socktype = SOCK_STREAM; - sprintf (port_str, "%d", port); + snprintf (port_str, sizeof(port_str), "%d", port); port_str[sizeof (port_str) - 1] = '\0'; ret = getaddrinfo (address, port_str, &req, &ainfo); @@ -380,11 +380,10 @@ bgp_socket (struct bgp *bgp, unsigned short port, char *address) sin.sin_port = htons (port); socklen = sizeof (struct sockaddr_in); - ret = inet_aton(address, &sin.sin_addr); - - if (ret < 1) + if (address && ((ret = inet_aton(address, &sin.sin_addr)) < 1)) { - zlog_err("bgp_socket: could not parse ip address %s: ", address, safe_strerror (errno)); + zlog_err("bgp_socket: could not parse ip address %s: %s", + address, safe_strerror (errno)); return ret; } #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN -- cgit v1.2.1