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-b...@mindrot.org ReportedBy: f...@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. _______________________________________________ openssh-bugs mailing list openssh-bugs@mindrot.org https://lists.mindrot.org/mailman/listinfo/openssh-bugs