[elbe-devel] [PATCH] licencexml: Catch spurious exception

Olivier Dion dion at linutronix.de
Mon Jun 22 19:13:46 CEST 2020


Getters of the cc variable can throw exceptions.  Thus, moved the list
of files creation in the try region.

Traceback:
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/var/cache/elbe/devel/elbepack/asyncworker.py", line 194, in execute
    skip_pbuild=self.skip_pbuilder)
  File "/var/cache/elbe/devel/elbepack/elbeproject.py", line 654, in build
    [p.name for p in cache.get_installed_pkgs()])
  File "/var/cache/elbe/devel/elbepack/elbeproject.py", line 1052, in
gen_licenses
    env.rfs.write_licenses(f, pkg_list, lic_xml_fname)
  File "/var/cache/elbe/devel/elbepack/efilesystem.py", line 217, in
write_licenses
    licence_xml.add_copyright_file(pkg, lic_text)
  File "/var/cache/elbe/devel/elbepack/licencexml.py", line 82, in
add_copyright_file
    files.append((cc.files, cc.license.synopsis, cc.copyright))
  File "/usr/lib/python2.7/dist-packages/debian/deb822.py", line 2092,
in getter
    return field.from_str(val)
  File "/usr/lib/python2.7/dist-packages/debian/copyright.py", line 436,
in from_str
    lines = parse_multiline_as_lines(s)
  File "/usr/lib/python2.7/dist-packages/debian/copyright.py", line 408,
in parse_multiline_as_lines
    'continued line must begin with " "')
MachineReadableFormatError: continued line must begin with " "
----------------------------------------------------------------------

Reported-by: Bastian Germann <bage at linutronix.de>
Signed-off-by: Olivier Dion <dion at linutronix.de>
---
 elbepack/licencexml.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/elbepack/licencexml.py b/elbepack/licencexml.py
index f9a748b5..8fb2b92d 100644
--- a/elbepack/licencexml.py
+++ b/elbepack/licencexml.py
@@ -70,17 +70,19 @@ class copyright_xml (object):
                                                      errors='replace'))
         try:
             c = Copyright(bytesio, strict=True)
-        except (NotMachineReadableError, MachineReadableFormatError) as E:
-            logging.warning("Error in copyright of package '%s': %s", pkg_name, E)
-        except Warning as W:
-            logging.warning("Warning in copyrigh of package '%s' : %s", pkg_name, W)
-        else:
 
             files = []
 
+            # Note!  Getters of cc can throw nasty exceptions!
             for cc in c.all_files_paragraphs():
                 files.append((cc.files, cc.license.synopsis, cc.copyright))
 
+        except (NotMachineReadableError, MachineReadableFormatError) as E:
+            logging.warning("Error in copyright of package '%s': %s", pkg_name, E)
+        except Warning as W:
+            logging.warning("Warning in copyrigh of package '%s' : %s", pkg_name, W)
+        else:
+
             xmlpkg.append('machinereadable')
             xmllic = xmlpkg.append('debian_licenses')
             seen = []
-- 
2.27.0




More information about the elbe-devel mailing list