Hide Forgot
sysutils.c:sockaddr_info() mishandles snprintf failure. If the buffer is too short, the expected length is returned, not a negative value. This is likely due to an incompatibility between the Single UNIX Specification and C99 (the latter has won). The code was correct when it was written first. This particular problem occurs in other places as well. It might make sense to add an snprintf wrapper (probably as a macro so that fortify checks are preserved, although that needs macro varargs support) that restores the SUSv2 behavior. Example code is here for the current canonical form for multiple snprintf calls in a row is here (for glibc, without error checking): <http://docs.fedoraproject.org/en-US/Fedora_Security_Team//html/Defensive_Coding/sect-Defensive_Coding-C-String-Functions-Length.html#ex-Defensive_Coding-C-String-Functions-snprintf-incremental> But considering the number of places that would need changing, a wrapper is probably the better approach.
Has been fixed in upstream release 1.7.2.4
This bug is addressed by ERRATA RHBA-2017:2049-03 socat bug fix update https://errata.devel.redhat.com/advisory/26967