connection: close_fds() should only remove fds it closed from the buffer

All current callers close all fds, so this has gone unnoticed, but if
we close less than all fds with close_fds() we leak all the unclosed
ones and ruin further event demarshalling.

A future patch will close less than the full buffer's worth of fds,
so this is now noticed.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Derek Foreman 2017-04-13 11:51:43 -05:00 committed by Daniel Stone
parent c3ff179a95
commit 971a9e7873

View file

@ -186,6 +186,7 @@ close_fds(struct wl_buffer *buffer, int max)
count = size / sizeof fds[0];
if (max > 0 && max < count)
count = max;
size = count * sizeof fds[0];
for (i = 0; i < count; i++)
close(fds[i]);
buffer->tail += size;