You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by "Michael Jumper (JIRA)" <ji...@apache.org> on 2016/05/19 06:03:12 UTC

[jira] [Resolved] (GUACAMOLE-23) __guac_socket_fd_select_handler() must always init fd_set

     [ https://issues.apache.org/jira/browse/GUACAMOLE-23?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Jumper resolved GUACAMOLE-23.
-------------------------------------
    Resolution: Fixed

Completed prior to full migration to Apache infrastructure.

> __guac_socket_fd_select_handler() must always init fd_set
> ---------------------------------------------------------
>
>                 Key: GUACAMOLE-23
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-23
>             Project: Guacamole
>          Issue Type: Bug
>          Components: libguac
>    Affects Versions: 0.9.9
>            Reporter: Michael Jumper
>            Priority: Minor
>             Fix For: 0.9.10-incubating
>
>
> {panel:bgColor=#FFFFEE}
> *The description of this issue was copied from [GUAC-1477|https://glyptodon.org/jira/browse/GUAC-1477], an issue in the JIRA instance used by the Guacamole project prior to its acceptance into the Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance *have not been copied* and can be found instead at the original issue.
> {panel}
> In [socket_fd.c|https://github.com/glyptodon/guacamole-server/blob/f49540f43644108fb50876c6cd208274688ce3e2/src/libguac/socket-fd.c#L95-L108], in function {{__guac_socket_fd_select_handler()}}, {{select()}} will be invoked without initializing the corresponding {{fd_set}} if {{usec_timeout}} is less than zero:
> {code:none}
>     /* No timeout if usec_timeout is negative */
>     if (usec_timeout < 0)
>         retval = select(data->fd + 1, &fds, NULL, NULL, NULL); 
>     /* Handle timeout if specified */
>     else {
>         timeout.tv_sec = usec_timeout/1000000;
>         timeout.tv_usec = usec_timeout%1000000;
>         FD_ZERO(&fds);
>         FD_SET(data->fd, &fds);
>         retval = select(data->fd + 1, &fds, NULL, NULL, &timeout);
>     }
> {code}
> Without the required {{FD_ZERO()}} and {{FD_SET()}} calls, {{select()}} will block indefinitely because no fd has been registered. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)