]> granicus.if.org Git - strace/commitdiff
msghdr.c: apply a sane limit to the length of IP_ORIGDSTADDR address
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 30 Jun 2016 22:26:35 +0000 (22:26 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 30 Jun 2016 22:26:35 +0000 (22:26 +0000)
* msghdr.c (print_cmsg_ip_origdstaddr): Limit address length to the size
of struct sockaddr_storage.

msghdr.c

index 5ebaeaa6140388a445cf1cb65333222d58f7d1b2..ed56849b43dd9e330be3a6fd4b8369fc6db4436e 100644 (file)
--- a/msghdr.c
+++ b/msghdr.c
@@ -202,11 +202,12 @@ static void
 print_cmsg_ip_origdstaddr(struct tcb *tcp, const void *cmsg_data,
                          const size_t data_len)
 {
-       if (sizeof(struct sockaddr_in) > data_len)
-               return;
+       const int addr_len =
+               data_len > sizeof(struct sockaddr_storage)
+               ? sizeof(struct sockaddr_storage) : data_len;
 
        tprints(", cmsg_data=");
-       print_sockaddr(tcp, cmsg_data, data_len);
+       print_sockaddr(tcp, cmsg_data, addr_len);
 }
 
 static void