Package: python3-magic
Version: 1:5.28-1

Hi,

since python3-magic 1:5.28-1 the file type detection is broken.
Instead of returning a string whih contains the magic, it returns
double encoded bytes:

>>> import magic
>>> path = "/usr/share/doc/gdb/refcard.ps.gz"
>>> x = magic.open(magic.NONE)
>>> x.load()
0
>>> x.file(path)
b"b'gzip compressed data, max compression, from Unix'"

(Instead of just 'gzip compressed data, max compression, from Unix' like
before.)

The problem seems to be those lines:

> r = _file(self._magic_t, bi)
> ...
>     return str(r).encode('utf-8')

r is already of type bytes, converting it to string results in the
string "b'gzip compressed data, max compression, from Unix'", which is
then encoded to utf-8:
b"b'gzip compressed data, max compression, from Unix'"

Converting it with str(r, 'utf-8') seems to be the correct way and has
the same result as before.

Kind regards,
  Reiner
diff --git a/debian/patches/fix_string_encoding.patch b/debian/patches/fix_string_encoding.patch
new file mode 100644
index 0000000..7600a47
--- /dev/null
+++ b/debian/patches/fix_string_encoding.patch
@@ -0,0 +1,29 @@
+--- a/python/magic.py
++++ b/python/magic.py
+@@ -134,7 +134,7 @@
+         if isinstance(r, str):
+             return r
+         else:
+-            return str(r).encode('utf-8')
++            return str(r, 'utf-8')
+ 
+     def descriptor(self, fd):
+         """
+@@ -152,7 +152,7 @@
+         if isinstance(r, str):
+             return r
+         else:
+-            return str(r).encode('utf-8')
++            return str(r, 'utf-8')
+ 
+     def error(self):
+         """
+@@ -163,7 +163,7 @@
+         if isinstance(e, str):
+             return e
+         else:
+-            return str(e).encode('utf-8')
++            return str(e, 'utf-8')
+ 
+     def setflags(self, flags):
+         """
diff --git a/debian/patches/series b/debian/patches/series
index 23199ea..1cb450f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -7,3 +7,4 @@ local.mention-posixly-correct-dependent-behaviour-in-usage-message.patch
 local.report-gz-as-application-gzip.patch
 local.disable-detection-of-vax-coff-executables.patch
 local.avoid-line-break-warning-from-man.patch
+fix_string_encoding.patch

Attachment: signature.asc
Description: Digital signature

Reply via email to