corrections for OpenEmbedded, especially termios SHIFT values andISPEED/OSPEED

This commit is contained in:
Gerhard Rieger 2012-07-22 23:38:02 +02:00
parent a65b1c7c72
commit 799a6ba377
5 changed files with 30 additions and 16 deletions

25
CHANGES
View file

@ -37,7 +37,7 @@ corrections:
fixed a bug where socat might crash when connecting to a unix domain fixed a bug where socat might crash when connecting to a unix domain
socket using address GOPEN. Thanks to Martin Forssen for bug report and socket using address GOPEN. Thanks to Martin Forssen for bug report and
patch. patch.
UDP-LISTEN would alway set SO_REUSEADDR even without fork option and UDP-LISTEN would alway set SO_REUSEADDR even without fork option and
when user set it to 0. Thanks to Michal Svoboda for reporting this bug. when user set it to 0. Thanks to Michal Svoboda for reporting this bug.
@ -46,17 +46,17 @@ corrections:
TCP-CONNECT with option nonblock reported successful connect even when TCP-CONNECT with option nonblock reported successful connect even when
it was still pending it was still pending
address option ioctl-intp failed with "unimplemented type 26". Thanks address option ioctl-intp failed with "unimplemented type 26". Thanks
to Jeremy W. Sherman for reporting and fixing that bug to Jeremy W. Sherman for reporting and fixing that bug
socat option -x did not print packet direction, timestamp etc; thanks socat option -x did not print packet direction, timestamp etc; thanks
to Anthony Sharobaiko for sending a patch to Anthony Sharobaiko for sending a patch
Marcus Meissner provided a patch that fixes invalid output and possible Marcus Meissner provided a patch that fixes invalid output and possible
process crash when socat prints info about an unnamed unix domain process crash when socat prints info about an unnamed unix domain
socket socket
Michal Soltys reported the following problem and provided an initial Michal Soltys reported the following problem and provided an initial
patch: when socat was interrupted, e.g. by SIGSTOP, and resumed during patch: when socat was interrupted, e.g. by SIGSTOP, and resumed during
data transfer only parts of the data might have been written. data transfer only parts of the data might have been written.
@ -64,25 +64,25 @@ corrections:
Option o-nonblock in combination with large transfer block sizes Option o-nonblock in combination with large transfer block sizes
may result in partial writes and/or EAGAIN errors that were not handled may result in partial writes and/or EAGAIN errors that were not handled
properly but resulted in data loss or process termination. properly but resulted in data loss or process termination.
Fixed a bug that could freeze socat when during assembly of a log Fixed a bug that could freeze socat when during assembly of a log
message a signal was handled that also printed a log message. socat message a signal was handled that also printed a log message. socat
development had been aware that localtime() is not thread safe but had development had been aware that localtime() is not thread safe but had
only expected broken messages, not corrupted stack (glibc 2.11.1, only expected broken messages, not corrupted stack (glibc 2.11.1,
Ubuntu 10.4) Ubuntu 10.4)
an internal store for child pids was susceptible to pid reuse which an internal store for child pids was susceptible to pid reuse which
could lead to sporadic data loss when both fork option and exec address could lead to sporadic data loss when both fork option and exec address
were used. Thanks to Tetsuya Sodo for reporting this problem and were used. Thanks to Tetsuya Sodo for reporting this problem and
sending a patch sending a patch
OpenSSL server failed with "no shared cipher" when using cipher aNULL. OpenSSL server failed with "no shared cipher" when using cipher aNULL.
Fixed by providing temporary DH parameters. Thanks to Philip Rowlands Fixed by providing temporary DH parameters. Thanks to Philip Rowlands
for drawing my attention to this issue. for drawing my attention to this issue.
UDP-LISTEN slept 1s after accepting a connection. This is not required. UDP-LISTEN slept 1s after accepting a connection. This is not required.
Thanks to Peter Valdemar Morch for reporting this issue Thanks to Peter Valdemar Morch for reporting this issue
fixed a bug that could lead to error or socat crash after a client fixed a bug that could lead to error or socat crash after a client
connection with option retry had been established connection with option retry had been established
@ -104,7 +104,7 @@ porting:
Cedril Priscal ported socat to Android (using Googles cross compiler). Cedril Priscal ported socat to Android (using Googles cross compiler).
The port includes the socat_buildscript_for_android.sh script The port includes the socat_buildscript_for_android.sh script
added check for component ipi_spec_dst in struct in_pktinfo so added check for component ipi_spec_dst in struct in_pktinfo so
compilation does not fail on Cygwin (thanks to Peter Wagemans for compilation does not fail on Cygwin (thanks to Peter Wagemans for
reporting this problem) reporting this problem)
@ -112,7 +112,7 @@ porting:
build failed on RHEL6 due to presence of fips.h; configure now checks build failed on RHEL6 due to presence of fips.h; configure now checks
for fipsld too. Thanks to Andreas Gruenbacher for reporting this for fipsld too. Thanks to Andreas Gruenbacher for reporting this
problem problem
check for netinet6/in6.h only when IPv6 is available and enabled check for netinet6/in6.h only when IPv6 is available and enabled
don't fail to compile when the following defines are missing: don't fail to compile when the following defines are missing:
@ -126,6 +126,9 @@ porting:
fixed compiler warnings on Mac OS X 64bit. Thanks to Guy Harris for fixed compiler warnings on Mac OS X 64bit. Thanks to Guy Harris for
providing the patch. providing the patch.
corrections for OpenEmbedded, especially termios SHIFT values and
ISPEED/OSPEED. Thanks to John Faith for providing the patch
####################### V 2.0.0-b7: ####################### V 2.0.0-b7:
security: security:

View file

@ -1341,10 +1341,13 @@ AC_CACHE_CHECK(shift offset of $1, $2,
], ],
[$2=`cat $conftestoffset`], [$2=`cat $conftestoffset`],
[$2=-1], [$2=-1],
[AC_MSG_RESULT(please determine $1_SHIFT manually)] [$2=-1]
) )
LIBS="$LIBS1"]) LIBS="$LIBS1"])
AC_DEFINE_UNQUOTED($1_SHIFT, ${$2}) AC_DEFINE_UNQUOTED($1_SHIFT, ${$2})
if test "$2" = -1; then
AC_MSG_WARN(please determine $1_SHIFT manually)
fi
]) ])
AC_SHIFT_OFFSET(CRDLY, sc_cv_sys_crdly_shift) AC_SHIFT_OFFSET(CRDLY, sc_cv_sys_crdly_shift)

View file

@ -1,5 +1,5 @@
/* source: xio-termios.c */ /* source: xio-termios.c */
/* Copyright Gerhard Rieger 2001-2008 */ /* Copyright Gerhard Rieger 2001-2012 */
/* Published under the GNU General Public License V.2, see file COPYING */ /* Published under the GNU General Public License V.2, see file COPYING */
/* this file contains the source for terminal I/O options */ /* this file contains the source for terminal I/O options */
@ -270,8 +270,12 @@ const struct optdesc opt_raw = { "raw", NULL, OPT_RAW, GROUP_TER
const struct optdesc opt_sane = { "sane", NULL, OPT_SANE, GROUP_TERMIOS, PH_FD, TYPE_CONST, OFUNC_TERMIOS_SPEC }; const struct optdesc opt_sane = { "sane", NULL, OPT_SANE, GROUP_TERMIOS, PH_FD, TYPE_CONST, OFUNC_TERMIOS_SPEC };
#ifdef HAVE_TERMIOS_ISPEED #ifdef HAVE_TERMIOS_ISPEED
#if defined(ISPEED_OFFSET) && (ISPEED_OFFSET != -1)
#if defined(OSPEED_OFFSET) && (OSPEED_OFFSET != -1)
const struct optdesc opt_ispeed = { "ispeed", NULL, OPT_ISPEED, GROUP_TERMIOS, PH_FD, TYPE_UINT, OFUNC_TERMIOS_SPEED, ISPEED_OFFSET }; const struct optdesc opt_ispeed = { "ispeed", NULL, OPT_ISPEED, GROUP_TERMIOS, PH_FD, TYPE_UINT, OFUNC_TERMIOS_SPEED, ISPEED_OFFSET };
const struct optdesc opt_ospeed = { "ospeed", NULL, OPT_OSPEED, GROUP_TERMIOS, PH_FD, TYPE_UINT, OFUNC_TERMIOS_SPEED, OSPEED_OFFSET }; const struct optdesc opt_ospeed = { "ospeed", NULL, OPT_OSPEED, GROUP_TERMIOS, PH_FD, TYPE_UINT, OFUNC_TERMIOS_SPEED, OSPEED_OFFSET };
#endif
#endif
#endif /* HAVE_TERMIOS_ISPEED */ #endif /* HAVE_TERMIOS_ISPEED */

View file

@ -68,11 +68,15 @@ int xioinitialize(int xioflags) {
assert(tdata.termarg.c_oflag == tdata.flags[1]); assert(tdata.termarg.c_oflag == tdata.flags[1]);
assert(tdata.termarg.c_cflag == tdata.flags[2]); assert(tdata.termarg.c_cflag == tdata.flags[2]);
assert(tdata.termarg.c_lflag == tdata.flags[3]); assert(tdata.termarg.c_lflag == tdata.flags[3]);
#if HAVE_TERMIOS_ISPEED #if HAVE_TERMIOS_ISPEED && (ISPEED_OFFSET != -1) && (OSPEED_OFFSET != -1)
#if defined(ISPEED_OFFSET) && (ISPEED_OFFSET != -1)
#if defined(OSPEED_OFFSET) && (OSPEED_OFFSET != -1)
tdata.termarg.c_ispeed = 0x56789abc; tdata.termarg.c_ispeed = 0x56789abc;
tdata.termarg.c_ospeed = 0x6789abcd; tdata.termarg.c_ospeed = 0x6789abcd;
assert(tdata.termarg.c_ispeed == tdata.speeds[ISPEED_OFFSET]); assert(tdata.termarg.c_ispeed == tdata.speeds[ISPEED_OFFSET]);
assert(tdata.termarg.c_ospeed == tdata.speeds[OSPEED_OFFSET]); assert(tdata.termarg.c_ospeed == tdata.speeds[OSPEED_OFFSET]);
#endif
#endif
#endif #endif
} }
#endif /* WITH_TERMIOS */ #endif /* WITH_TERMIOS */

View file

@ -786,7 +786,7 @@ const struct optname optionnames[] = {
IF_IP6 ("ipv6only", &opt_ipv6_v6only) IF_IP6 ("ipv6only", &opt_ipv6_v6only)
#endif #endif
IF_TERMIOS("isig", &opt_isig) IF_TERMIOS("isig", &opt_isig)
#ifdef HAVE_TERMIOS_ISPEED #if defined(HAVE_TERMIOS_ISPEED) && defined(ISPEED_OFFSET) && (ISPEED_OFFSET != -1)
IF_TERMIOS("ispeed", &opt_ispeed) IF_TERMIOS("ispeed", &opt_ispeed)
#endif #endif
IF_TERMIOS("istrip", &opt_istrip) IF_TERMIOS("istrip", &opt_istrip)
@ -1057,7 +1057,7 @@ const struct optname optionnames[] = {
IF_OPENSSL("openssl-pseudo", &opt_openssl_pseudo) IF_OPENSSL("openssl-pseudo", &opt_openssl_pseudo)
IF_OPENSSL("openssl-verify", &opt_openssl_verify) IF_OPENSSL("openssl-verify", &opt_openssl_verify)
IF_TERMIOS("opost", &opt_opost) IF_TERMIOS("opost", &opt_opost)
#ifdef HAVE_TERMIOS_ISPEED #if defined(HAVE_TERMIOS_ISPEED) && defined(OSPEED_OFFSET) && (OSPEED_OFFSET != -1)
IF_TERMIOS("ospeed", &opt_ospeed) IF_TERMIOS("ospeed", &opt_ospeed)
#endif #endif
IF_ANY ("owner", &opt_user) IF_ANY ("owner", &opt_user)