[Xcb] [PATCH] Initialize all fields of addrinfo and use #ifdef

Barton C Massey bart at cs.pdx.edu
Wed Aug 27 09:34:40 PDT 2008


The memset() here seems like it could potentially mask a
bug.  Initializing unknown extra fields to zero seems
scary---better to leave them uninitialized and hope the
compiler or valgrind can notice and warn. Am I missing
something?

	Bart

In message <1219838188-8908-6-git-send-email-julien at danjou.info> you wrote:
> Signed-off-by: Julien Danjou <julien at danjou.info>
> ---
>  src/xcb_util.c |   21 ++++++++++++---------
>  1 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/src/xcb_util.c b/src/xcb_util.c
> index 8c18d71..c6c5189 100644
> --- a/src/xcb_util.c
> +++ b/src/xcb_util.c
> @@ -201,14 +201,7 @@ static int _xcb_open_decnet(const char *host, const char *protocol, const unsign
>  static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port)
>  {
>      int fd = -1;
> -    struct addrinfo hints = { 0
> -#ifdef AI_ADDRCONFIG
> -                              | AI_ADDRCONFIG
> -#endif
> -#ifdef AI_NUMERICSERV
> -                              | AI_NUMERICSERV
> -#endif
> -                              , AF_UNSPEC, SOCK_STREAM };
> +    struct addrinfo hints;
>      char service[6]; /* "65535" with the trailing '\0' */
>      struct addrinfo *results, *addr;
>      char *bracket;
> @@ -216,6 +209,16 @@ static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port)
>      if (protocol && strcmp("tcp",protocol))
>          return -1;
>  
> +    memset(&hints, 0, sizeof(hints));
> +#ifdef AI_ADDRCONFIG
> +    hints.ai_flags |= AI_ADDRCONFIG;
> +#endif
> +#ifdef AI_NUMERICSERV
> +    hints.ai_flags |= AI_NUMERICSERV;
> +#endif
> +    hints.ai_family = AF_UNSPEC;
> +    hints.ai_socktype = SOCK_STREAM;
> +
>  #ifdef AF_INET6
>      /* Allow IPv6 addresses enclosed in brackets. */
>      if(host[0] == '[' && (bracket = strrchr(host, ']')) && bracket[1] == '\0')
> @@ -253,7 +256,7 @@ static int _xcb_open_unix(char *protocol, const char *file)
>  
>      strcpy(addr.sun_path, file);
>      addr.sun_family = AF_UNIX;
> -#if HAVE_SOCKADDR_SUN_LEN
> +#ifdef HAVE_SOCKADDR_SUN_LEN
>      addr.sun_len = SUN_LEN(&addr);
>  #endif
>      fd = socket(AF_UNIX, SOCK_STREAM, 0);
> -- 
> 1.5.6.3
> 
> _______________________________________________
> Xcb mailing list
> Xcb at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xcb


More information about the Xcb mailing list