[Bug 2056485] Re: Behaviour of socat in Ubuntu 20.04 unexpected

Robie Basak 2056485 at bugs.launchpad.net
Fri Apr 12 14:37:30 UTC 2024


I consulted with other SRU team members today.

We agree that the bug is valid and that the current behaviour is wrong.
However, if we were to change behaviour, the concern is that existing
users might be regressed in a way that will be difficult for them to
track down. The trade-off we must make is between this, what a
fix/workaround for such regressed users would look like and the (very
valid) issue with mkvterm in Focal, and what a fix/workaround for
mkvterm would look like.

I assume that the fix itself for regressed users would be to adjust the
call to socat so that it works correctly, which should be
straightforward once an affected user identifies the call to socat as
the cause of a regression and assuming that the user is in a position to
change the socat call.

We'd like to hear more about the opportunity to work around the issue in
mkvterm.

For example, am I right in understanding that the issue is that when
specifying "socat $spec_a,extra-options $spec_b", extra-options in
$spec_a are (incorrectly) _copied_ forward to $spec_b? Does this happen
the other way round? Would a workaround be to use "socat $spec_b
$spec_a,extra-options" instead, or would this not work? If it would
work, then how difficult would it be to work around the issue in this
way in mkvterm or by adding a wrapper around it?

The SRU team would like this avenue to be investigated before making a
decision please.

> The updated debdiff is attached.

Did you forget to attach this? The latest upload in the queue still has
changes to Makefile.in which I think are unnecessary?

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2056485

Title:
  Behaviour of socat in Ubuntu 20.04 unexpected

Status in The Ubuntu-power-systems project:
  In Progress
Status in socat package in Ubuntu:
  Fix Released
Status in socat source package in Focal:
  Incomplete

Bug description:
  SRU Justification:

  [ Impact ]

   * IBM Novalink provides a tool called mkvterm.
     Mkvterm takes an lpar id argument and creates a vty-server device on
     device nodes /dev/hvcs*.
     HVCS is a device driver for the IBM Hypervisor Virtual Console Server
     (hvcs). Mkvterm then uses socat to connect.

   * But socat is not behaving as expected.
     When escape=0x1d is passed, you have to hit enter for socat to close
     (expected behavior is Ctrl-] closing the connection).

   * In addition, Ctrl-C closes the connection.
     When using the up and down arrows, junk is printed.
     Password is also visible!

   * This is caused by the fact that under certain circumstances,
     options of the first address are applied to the second address.

  [ Fix ]

   * 5ebf36038f39 5ebf36038f3960798e769bff5646e755a91a1119
     "Under certain circumstances, options of the first address were applied to the second address"

   * 9de26f1d0528 9de26f1d05284257cd9bbb6eb6662089ab7a0680
     "minor corrections, not affecting binaries"

  [ Test Plan ]

   * There was a special test case introduced for this change
     it's test #385.
     If this succeeds, the reported issue is solved.

   * Initially this test case failed, because it required another commit
     on top: 9de26f1d0528
   
   * To verify the overall end-2-end case, the fixes from LP#056373 are required
     as well, but can be taken from the PPA test build that was done there.

   * Then configure a vty-server and try to connect with socat:
     /usr/bin/socat STDIO,raw,echo=0,escape=0x1d /dev/hvcs[minor num]

   * With an unpatched version one will see that the password is
  visible.

   * In addition, the up and down arrows do not work and junk is outputted.
     In addition, Ctrl-] does not close the vterm.

   * Ctrl-C closes the vterm, and it should not.

   * With a patched version the password will not be visible,
     Ctrl+] and Ctrl+C behave as expected.

  [ Where problems could occur ]

   * The code modification is limited to a single line in if
     and is pretty traceable, and it's on top limited to terminos.

   * If the changed condition of IF was done wrong, the expected
     behavior can change (again) and unforeseen things may happen.

   * The rest of the code changes are text in CHANGES and
     a new test case, introduced especially for this bug.

   * Nevertheless, issues can also occur in the (additional)
     test code (which happened and got fixed by adding 9de26f1d0528).

  [ Other Info ]
   
   * Even the code states that this bug is limited to v1.7.3.3.

   * Nevertheless, the code of the socat versions of jammy, mantic
     and noble were checked, and they all have the fix included.
     (However the code in noble's version changed a bit).

   * So only focal is affected.
  __________

  ---Problem Description---
  Novalink provides a tool called mkvterm. Mkvterm takes an lpar id argument and creates a vty-server device on device nodes /dev/hvcs*. HVCS is a device driver for the IBM Hypervisor Virtual Console Server (hvcs). Mkvterm then uses socat to connect.

  Socat is not behaving as expected. When escape=0x1d is passed, you
  have to hit enter for socat to close (expected behavior is Ctrl-]
  closing the connection). In addition, Ctrl-C closes the connection.
  When using the up and down arrows, junk is printed. Password is also
  visible.

  The follow commit fixes the above issues, please add:
  https://repo.or.cz/socat.git/commit/5ebf36038f39

  ---uname output---
  Linux neop91.pok.stglabs.ibm.com 5.4.0-173-generic #191-Ubuntu SMP Fri Feb 2 13:54:35 UTC 2024 ppc64le ppc64le ppc64le GNU/Linux

  ---Steps to Reproduce---
   Fixes to other issues required to reproduce. Mentioned in other bugs.

  Configure a vty-server and try to connect with socat:

  /usr/bin/socat STDIO,raw,echo=0,escape=0x1d /dev/hvcs[minor num]

  Add You will see that the password is visible. In addition, the up and
  down arrows do not work, junk is outputted. In addition, Ctrl-] does
  not close the vterm. Ctrl-C closes the vterm, and it should not.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/2056485/+subscriptions




More information about the Ubuntu-sponsors mailing list