Bug 1021948

Summary: socat: snprintf API change
Product: Red Hat Enterprise Linux 7 Reporter: Florian Weimer <fweimer>
Component: socatAssignee: Paul Wouters <pwouters>
Status: CLOSED CURRENTRELEASE QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: gerhard, jaster, omoris
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 1.7.3.1-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-11-13 10:58:36 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1019961, 1085024    

Description Florian Weimer 2013-10-22 11:45:07 UTC
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.

Comment 2 Gerhard 2014-03-10 21:06:25 UTC
Has been fixed in upstream release 1.7.2.4

Comment 5 Paul Wouters 2018-11-13 10:58:36 UTC
This bug is addressed by ERRATA RHBA-2017:2049-03 socat bug fix update

https://errata.devel.redhat.com/advisory/26967