qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] qemu-char: fix tcp_get_fds
@ 2014-11-02 16:53 Michael S. Tsirkin
  2014-11-03 15:09 ` Markus Armbruster
  0 siblings, 1 reply; 13+ messages in thread
From: Michael S. Tsirkin @ 2014-11-02 16:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini

tcp_get_fds API discards fds if there's more than 1 of these.

It's tricky to fix this without API changes in the generic case.

However, this API is only used by tests ATM, and tests know how
many fds they expect.

So let's not waste cycles trying to fix this properly:
simply assume at most 16 fds (tests use at most 8 now).
assert if some test tries to get more.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 qemu-char.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/qemu-char.c b/qemu-char.c
index bd0709b..1c4004c 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -88,6 +88,7 @@
 #define READ_BUF_LEN 4096
 #define READ_RETRIES 10
 #define CHR_MAX_FILENAME_SIZE 256
+#define TCP_MAX_FDS 16
 
 /***********************************************************/
 /* Socket address helpers */
@@ -2668,6 +2669,8 @@ static int tcp_get_msgfds(CharDriverState *chr, int *fds, int num)
     TCPCharDriver *s = chr->opaque;
     int to_copy = (s->read_msgfds_num < num) ? s->read_msgfds_num : num;
 
+    assert(num <= TCP_MAX_FDS);
+
     if (to_copy) {
         int i;
 
@@ -2762,7 +2765,7 @@ static ssize_t tcp_chr_recv(CharDriverState *chr, char *buf, size_t len)
     struct iovec iov[1];
     union {
         struct cmsghdr cmsg;
-        char control[CMSG_SPACE(sizeof(int))];
+        char control[CMSG_SPACE(sizeof(int) * TCP_MAX_FDS)];
     } msg_control;
     int flags = 0;
     ssize_t ret;
-- 
MST

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-11-27  9:58 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-02 16:53 [Qemu-devel] [PATCH] qemu-char: fix tcp_get_fds Michael S. Tsirkin
2014-11-03 15:09 ` Markus Armbruster
2014-11-03 15:19   ` Michael S. Tsirkin
2014-11-03 16:06     ` Markus Armbruster
2014-11-03 16:13     ` Markus Armbruster
2014-11-03 16:22       ` Peter Maydell
2014-11-03 16:32         ` Michael S. Tsirkin
2014-11-03 16:35         ` Michael S. Tsirkin
2014-11-04  0:17           ` Peter Maydell
2014-11-04 13:49             ` Michael S. Tsirkin
2014-11-03 16:40       ` Michael S. Tsirkin
2014-11-04  6:50         ` Markus Armbruster
2014-11-27  9:58           ` Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).