g_socket_send_message() fails due to invalid sendmsg(2) params.
authorJames Hunt <jamesodhunt@gmail.com>
Thu, 10 Sep 2009 16:18:13 +0000 (17:18 +0100)
committerDan Winship <danw@gnome.org>
Fri, 11 Sep 2009 12:52:14 +0000 (08:52 -0400)
g_socket_send_message() and g_socket_send_to() fail with ENOBUFS or
EFAULT due to the fact that if no "address" argument is specified to
g_socket_send_message, when g_socket_send_message() calls sendmsg(2),
the 2nd parameter to sendmsg ("const struct msghdr *msg") contains
uninitialized values. The fix is simple - initialize msg.msg_name to
NULL and msg.msg_msg_namelen to 0.

https://bugzilla.gnome.org/show_bug.cgi?id=594759

gio/gsocket.c

index dd60e03..8e9e07e 100644 (file)
@@ -2629,6 +2629,11 @@ g_socket_send_message (GSocket                *socket,
        if (!g_socket_address_to_native (address, msg.msg_name, msg.msg_namelen, error))
          return -1;
       }
+    else
+      {
+       msg.msg_name = NULL;
+       msg.msg_namelen = 0;
+      }
 
     /* iov */
     {