Hi v2 of the socket patch, with a formatted error message as requested by zeus on irc.
- Lauri
>From 858d7da729e301db729535d0451974d636530177 Mon Sep 17 00:00:00 2001 From: Lauri Kasanen <[email protected]> Date: Thu, 3 May 2012 15:19:00 +0300 Subject: [PATCH] socket: Fix possible overflow, v2 mk_socket_ip_str passed the wrong size to inet_ntop. v2: Output a nice error message Signed-off-by: Lauri Kasanen <[email protected]> --- src/mk_socket.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mk_socket.c b/src/mk_socket.c index 33815b8..f79433e 100644 --- a/src/mk_socket.c +++ b/src/mk_socket.c @@ -190,24 +190,29 @@ int mk_socket_ip_str(int socket_fd, char **buf, int size, unsigned long *len) { struct sockaddr addr; socklen_t s_len = sizeof(addr); + const int bufsize = 80; + char errormsg[bufsize]; if((getpeername(socket_fd, &addr, &s_len)) == -1 ) { MK_TRACE("[FD %i] Can't get addr for this socket", socket_fd); return -1; } + errno = 0; + if(addr.sa_family == AF_INET) { if((inet_ntop(addr.sa_family, &((struct sockaddr_in *)&addr)->sin_addr, - *buf, INET_ADDRSTRLEN)) == NULL) { - MK_TRACE("Can't get the IP text form"); + *buf, size)) == NULL) { + strerror_r(errno, errormsg, bufsize); + mk_warn("mk_socket_ip_str: Can't get the IP text form, %s", errormsg); return -1; } } - - if(addr.sa_family == AF_INET6) { + else if(addr.sa_family == AF_INET6) { if((inet_ntop(addr.sa_family, &((struct sockaddr_in6 *)&addr)->sin6_addr, - *buf, INET6_ADDRSTRLEN)) == NULL) { - MK_TRACE("Can't get the IP text form"); + *buf, size)) == NULL) { + strerror_r(errno, errormsg, bufsize); + mk_warn("mk_socket_ip_str: Can't get the IP text form, %s", errormsg); return -1; } } -- 1.7.2.1
_______________________________________________ Monkey mailing list [email protected] http://lists.monkey-project.com/listinfo/monkey
