diff mbox series

UnicodeDecodeError: utf-8 on python semanage -i import

Message ID CAEeCnGzRMiiDZKaDgnX_dqpeK5rM=aO5zBZ6frWJT4WQj5cVEQ@mail.gmail.com (mailing list archive)
State Rejected
Delegated to: Petr Lautrbach
Headers show
Series UnicodeDecodeError: utf-8 on python semanage -i import | expand

Commit Message

Allan Oepping July 1, 2024, 5:18 p.m. UTC
Importing a .pp file with the python semanage -i option generates a
"UnicodeDecodeError: utf-8" on an up to date Rocky 9 distribution.

packages:

policycoreutils-python-utils-3.6-2.1.el9.noarch
python-unversioned-command-3.9.18-3.el9.noarch

The open() in SetImportFile needs the binary "b" option to open the file in
binary mode, as the .pp file is not in utf-8 format:


patch also attached.

Thanks,

Allan Oepping

Comments

Stephen Smalley July 29, 2024, 2:51 p.m. UTC | #1
On Mon, Jul 1, 2024 at 1:19 PM Allan Oepping <allan@intellipay.com> wrote:
>
> Importing a .pp file with the python semanage -i option generates a "UnicodeDecodeError: utf-8" on an up to date Rocky 9 distribution.
>
> packages:
>
> policycoreutils-python-utils-3.6-2.1.el9.noarch
> python-unversioned-command-3.9.18-3.el9.noarch
>
> The open() in SetImportFile needs the binary "b" option to open the file in binary mode, as the .pp file is not in utf-8 format:

Did you mean to use semodule -i? That's how one imports a policy module.
Also, patches should be -p1 appliable and include a Signed-off-by: line.

>
> --- /semanage~ 2024-07-01 10:29:20.000000000 -0600
> +++ /semanage 2024-07-01 10:54:30.520312298 -0600
> @@ -122,11 +122,11 @@
>  class SetImportFile(argparse.Action):
>
>      def __call__(self, parser, namespace, values, option_string=None):
>          if values and values != "-":
>              try:
> -                sys.stdin = open(values, 'r')
> +                sys.stdin = open(values, 'rb')
>              except IOError as e:
>                  sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
>                  sys.exit(1)
>          setattr(namespace, self.dest, values)
>
> patch also attached.
>
> Thanks,
>
> Allan Oepping
Stephen Smalley July 29, 2024, 4:54 p.m. UTC | #2
On Mon, Jul 29, 2024 at 10:51 AM Stephen Smalley
<stephen.smalley.work@gmail.com> wrote:
>
> On Mon, Jul 1, 2024 at 1:19 PM Allan Oepping <allan@intellipay.com> wrote:
> >
> > Importing a .pp file with the python semanage -i option generates a "UnicodeDecodeError: utf-8" on an up to date Rocky 9 distribution.
> >
> > packages:
> >
> > policycoreutils-python-utils-3.6-2.1.el9.noarch
> > python-unversioned-command-3.9.18-3.el9.noarch
> >
> > The open() in SetImportFile needs the binary "b" option to open the file in binary mode, as the .pp file is not in utf-8 format:
>
> Did you mean to use semodule -i? That's how one imports a policy module.
> Also, patches should be -p1 appliable and include a Signed-off-by: line.

As far as I can tell, semanage expects a text file as input with
commands to execute, not a module file.
diff mbox series

Patch

--- /semanage~	2024-07-01 10:29:20.000000000 -0600
+++ /semanage	2024-07-01 10:54:30.520312298 -0600
@@ -122,11 +122,11 @@ 
 class SetImportFile(argparse.Action):
 
     def __call__(self, parser, namespace, values, option_string=None):
         if values and values != "-":
             try:
-                sys.stdin = open(values, 'r')
+                sys.stdin = open(values, 'rb')
             except IOError as e:
                 sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
                 sys.exit(1)
         setattr(namespace, self.dest, values)