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

Reply via email to