http://llvm.org/bugs/show_bug.cgi?id=10871

           Summary: -Warray-bounds fires on usr/include/socket.h ipv6
                    sockaddr usage
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


>From  /Developer/SDKs/MacOSX10.6.sdk/usr/include/sys/socket.h:

struct sockaddr {
    __uint8_t    sa_len;        /* total length */
    sa_family_t    sa_family;    /* [XSI] address family */
    char        sa_data[14];    /* [XSI] addr value (actually larger) */
};

For ipv6 ( in6.h somewhere in Kernel.frameworkl ):

struct in6_addr {
    union {
        __uint8_t   __u6_addr8[16];
        __uint16_t  __u6_addr16[8];
        __uint32_t  __u6_addr32[4];
    } __u6_addr;            /* 128-bit IP6 address */
};

struct sockaddr_in6 {
    __uint8_t    sin6_len;    /* length of this struct(sa_family_t)*/
    sa_family_t    sin6_family;    /* AF_INET6 (sa_family_t) */
    in_port_t    sin6_port;    /* Transport layer port # (in_port_t)*/
    __uint32_t    sin6_flowinfo;    /* IP6 flow information */
    struct in6_addr    sin6_addr;    /* IP6 address */
    __uint32_t    sin6_scope_id;    /* scope zone index */
};

Given `sockaddr* myaddr = ...`, if myaddr->sa_family == AF_INET6, then
accessing myaddr->sa_data[6 + 15] is valid (it's some byte of the in6_addr),
yet clang warns " warning: array index of '21' indexes past the end of an array
(that contains 14 elements) [-Warray-bounds]".

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to