unnamed unix domain socket could generate invalid log output or lead to a process crash

This commit is contained in:
Gerhard Rieger 2011-10-08 11:10:58 +02:00
parent b8d16ecd51
commit 3881c794a7
2 changed files with 13 additions and 5 deletions

View file

@ -26,6 +26,10 @@ corrections:
address PTY does not take any parameters but did not report an error address PTY does not take any parameters but did not report an error
when some were given when some were given
Marcus Meissner provided a patch that fixes invalid output and possible
process crash when socat prints info about an unnamed unix domain
socket
####################### V 1.7.1.3: ####################### V 1.7.1.3:
security: security:

View file

@ -1,5 +1,5 @@
/* source: sysutils.c */ /* source: sysutils.c */
/* Copyright Gerhard Rieger 2001-2008 */ /* Copyright Gerhard Rieger 2001-2011 */
/* Published under the GNU General Public License V.2, see file COPYING */ /* Published under the GNU General Public License V.2, see file COPYING */
/* translate socket addresses into human readable form */ /* translate socket addresses into human readable form */
@ -215,10 +215,14 @@ char *sockaddr_unix_info(const struct sockaddr_un *sa, socklen_t salen, char *bu
} else } else
#endif /* WITH_ABSTRACT_UNIXSOCKET */ #endif /* WITH_ABSTRACT_UNIXSOCKET */
{ {
nextc = if (salen <= XIOUNIXSOCKOVERHEAD) {
sanitize_string(sa->sun_path, nextc = sanitize_string ("<anon>", MIN(UNIX_PATH_MAX, strlen("<anon>")),
ubuff, XIOSAN_DEFAULT_BACKSLASH_OCT_3);
} else {
nextc = sanitize_string(sa->sun_path,
MIN(UNIX_PATH_MAX, strlen(sa->sun_path)), MIN(UNIX_PATH_MAX, strlen(sa->sun_path)),
ubuff, XIOSAN_DEFAULT_BACKSLASH_OCT_3); ubuff, XIOSAN_DEFAULT_BACKSLASH_OCT_3);
}
*nextc = '\0'; *nextc = '\0';
strncpy(buff, ubuff, blen); strncpy(buff, ubuff, blen);
} }