On Tue, Jan 4, 2022 at 1:12 PM Ilya Maximets <i.maxim...@ovn.org> wrote:
>
> On 11/30/21 17:20, Mike Pattrick wrote:
> > Recently there has been a lot of press about the "trojan source" attack,
> > where Unicode characters are used to obfuscate the true functionality of
> > code. This attack didn't effect OVS, but adding the check here will help
> > guard against it sneaking in later.
> >
> > Signed-off-by: Mike Pattrick <m...@redhat.com>
> > ---
> > Changes in v2:
> >    - Now all unicode characters will result in an error.
> >
> > Changes in v3:
> >    - Added a test to validate behavior
> >
> > Changes in v4:
> >    - Simplified regex
> >
> > ---
> >  tests/checkpatch.at     | 22 ++++++++++++++++++++++
> >  utilities/checkpatch.py | 11 +++++++++++
> >  2 files changed, 33 insertions(+)
>
> Some weird stuff is going on here.  On one of my systems (rhel 8.5)
> I'm getting a consistent test failure.  The reason for that appears
> to be a different default locale used while executing checkpatch.py
> from a testsuite.  If checkpatch.py is invoked by hands, the
> locale.getpreferredencoding() returns 'UTF-8', but if invoked from
> a testsuite, I'm getting 'ANSI_X3.4-1968' instead.
>
> This impacts the file read, since open() by default uses the
> locale.getpreferredencoding() encoding, so email.message_from_file()
> fails to read the file with unicode symbols and throws an exception
> resulting with the following error:
>
>   ERROR: Unable to parse file 'test.patch'. Is it a patch?
>
> That fails the unit test.
> I am not sure why the default locale is different while running
> under the testsuite on this system.  The following change seems
> to fix the problem:
>
> diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
> index 395d0fcde..8c7faa419 100755
> --- a/utilities/checkpatch.py
> +++ b/utilities/checkpatch.py
> @@ -954,7 +954,7 @@ def ovs_checkpatch_print_result():
>
>  def ovs_checkpatch_file(filename):
>      try:
> -        mail = email.message_from_file(open(filename, 'r'))
> +        mail = email.message_from_file(open(filename, 'r', encoding='utf8'))
>      except:
>          print_error("Unable to parse file '%s'. Is it a patch?" % filename)
>          return -1
> ---
>
> If that looks good to you, I can fold the change in before applying
> the patch.
>
> What do you think?

That is strange, I reproduced this behavior on RHEL 8.5; however, RHEL
9.0 beta uses the UTF8 locale.

This change looks good to me!

-M

>
> Best regards, Ilya Maximets.
>

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to