@mwhudson yes, I am working on the debdiffs and once ready I'll attach
them here.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to lsb in Ubuntu.
https://bugs.launchpad.net/bugs/1761341

Title:
  lsb_release crashed with ValueError in <lambda>(): could not convert
  string to float: '6.06 LTS'

Status in lsb package in Ubuntu:
  Fix Released
Status in lsb source package in Bionic:
  Confirmed
Status in lsb source package in Focal:
  Confirmed
Status in lsb source package in Jammy:
  Confirmed

Bug description:
  [Description]

  In some cases lsb_release script can crash with the following trace :

  Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 95, in <module>
  main()
  File "/usr/bin/lsb_release", line 59, in main
  distinfo = lsb_release.get_distro_information()
  File "/usr/lib/python3/dist-packages/lsb_release.py", line 356, in
  get_distro_information
  distinfo = guess_debian_release()
  File "/usr/lib/python3/dist-packages/lsb_release.py", line 246, in
  guess_debian_release
  get_distro_info(distinfo['ID'])
  File "/usr/lib/python3/dist-packages/lsb_release.py", line 48, in
  get_distro_info
  RELEASES_ORDER.sort(key=lambda n: float(n[0]))
  File "/usr/lib/python3/dist-packages/lsb_release.py", line 48, in <lambda>
  RELEASES_ORDER.sort(key=lambda n: float(n[0]))
  ValueError: could not convert string to float: '6.06 LTS

  The root cause of this is that function get_distro_info() while parsing
  the '/usr/share/distro-info/ubuntu.csv' and expects to find a float at the
  beginning of each line, instead it find a string ("6.06 LTS").

  There is a fix for this bug upstream:
  
https://salsa.debian.org/debian/lsb/-/commit/4b36f9d31c00233ea20415542633729ab3799e61
  and is already in kinetic.

  [Test Case]

  The easier way to reproduce this bug is to hack 
/usr/share/pyshared/lsb_release.py file
  change the get_distro_info definition from
  def get_distro_info(origin='Debian'):
  to
  def get_distro_info(origin='Ubuntu'):
  and run
  $ lsb_release
  Traceback (most recent call last):
    File "/usr/bin/lsb_release", line 25, in <module>
      import lsb_release
    File "/usr/lib/python3/dist-packages/lsb_release.py", line 58, in <module>
      get_distro_info()
    File "/usr/lib/python3/dist-packages/lsb_release.py", line 48, in 
get_distro_info
      RELEASES_ORDER.sort(key=lambda n: float(n[0]))
    File "/usr/lib/python3/dist-packages/lsb_release.py", line 48, in <lambda>
      RELEASES_ORDER.sort(key=lambda n: float(n[0]))
  ValueError: could not convert string to float: '6.06 LTS'

  
  A detailed analysis on how this bug can happen in a real life scenario
  can be found in comment #3.

  [Regression Potential]

  The fix changes the way get_distro_info function parses the csv file and 
instead of expecting
  a float at the beginning of the line, it now expects a string and isolates 
the numerical part.

  The regression potential is small and would affect the behavior of
  lsb_release executable.

  [Other]

  Debian bug : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980566
  Fix : 
https://salsa.debian.org/debian/lsb/-/commit/4b36f9d31c00233ea20415542633729ab3799e61
  Affected releases : Jammy, Focal, Bionic

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lsb/+bug/1761341/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to