[Bug 1825] New: ipv64_normalise_mapped()'s memset should use a4, not addr, for clarity

bugzilla-daemon at bugzilla.mindrot.org bugzilla-daemon at bugzilla.mindrot.org
Thu Sep 23 12:04:13 EST 2010


https://bugzilla.mindrot.org/show_bug.cgi?id=1825

           Summary: ipv64_normalise_mapped()'s memset should use a4, not
                    addr, for clarity
           Product: Portable OpenSSH
           Version: 5.6p1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: trivial
          Priority: P2
         Component: Miscellaneous
        AssignedTo: unassigned-bugs at mindrot.org
        ReportedBy: foo at mailinator.com


The current code in "canohost.c" looks like this:

void
ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len)
{
    struct sockaddr_in6 *a6 = (struct sockaddr_in6 *)addr;
    struct sockaddr_in *a4 = (struct sockaddr_in *)addr;
...
    memset(addr, 0, sizeof(*a4));


That last line has the correct behavior, but it would help with static
analysis and compiler diagnostics if it were written as:
    memset(a4, 0, sizeof(*a4));

A compiler here unnamed gives a warning on the unmodified line, because
it sees that *addr is not the same size as *a4 and therefore the
memset() might be setting the "wrong" number of bytes.  If we change
the code to use a4 consistently when referring to an IPv4 sockaddr, the
compiler is happier, and incidentally the code's correctness is more
obvious, too.

-- 
Configure bugmail: https://bugzilla.mindrot.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.


More information about the openssh-bugs mailing list