Bug 1021948 - socat: snprintf API change
Summary: socat: snprintf API change
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: socat
Version: 7.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Paul Wouters
QA Contact: BaseOS QE Security Team
URL:
Whiteboard:
Depends On:
Blocks: 1019961 1085024
TreeView+ depends on / blocked
 
Reported: 2013-10-22 11:45 UTC by Florian Weimer
Modified: 2018-11-13 10:58 UTC (History)
3 users (show)

Fixed In Version: 1.7.3.1-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-11-13 10:58:36 UTC
Target Upstream Version:


Attachments (Terms of Use)

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


Note You need to log in before you can comment on or make changes to this bug.