user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [Debian 9][Perl 5.24] uninitialized value errors in Encode/MIME/Header.pm
@ 2020-12-26 11:27  4% Ali Alnubani
  0 siblings, 0 replies; 3+ results
From: Ali Alnubani @ 2020-12-26 11:27 UTC (permalink / raw)
  To: meta@public-inbox.org

Hi,

I see errors similar to the following in Debian 9 (stretch) with Perl 5.24:
"""
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
"""

The errors reproduce when running make test, public-inbox-watch, and public-inbox-index on v1.5.0 and later, including v1.6.0 and latest master 451ffd30.

git-bisect points to "d35a49e1 eml: remove dependency on Email::MIME::Encodings" as the first bad commit. However, reverting it causes a different failure in t/eml.t:
"""
t/eml.t ...................... 1/? Undefined subroutine &PublicInbox::Eml::encode_base64 called at /opt/public-inbox.org/blib/lib/PublicInbox/Eml.pm line 291.
"""

Output of make test on v1.5.0 (Result: PASS):
"""
PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/address.t .................. ok    
t/admin.t .................... ok    
...
t/emergency.t ................ ok    
t/eml.t ...................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/eml.t ...................... ok     
...
t/filter_subjecttag.t ........ 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/filter_subjecttag.t ........ ok   
...
t/hval.t ..................... ok    
t/import.t ................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 1.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 2.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 5.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/import.t ................... ok    
t/inbox.t .................... ok    
...
t/mda.t ...................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/mda.t ...................... ok    
...
t/nntp.t ..................... ok    
t/nntpd-tls.t ................ skipped: certs/ missing for t/nntpd-tls.t, run /usr/bin/perl ./create-certs.perl in certs/
t/nntpd.t .................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 2.
t/nntpd.t .................... ok    
t/nulsubject.t ............... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/nulsubject.t ............... ok   
t/over.t ..................... ok    
...
t/search-thr-index.t ......... ok    
t/search.t ................... 10/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
t/search.t ................... ok     
...
All tests successful.
Files=91, Tests=3499, 87 wallclock secs ( 0.67 usr  0.10 sys + 18.26 cusr  9.28 csys = 28.31 CPU)
Result: PASS
"""

Output of make test on master 451ffd30 (Result: FAIL):
"""
PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/address.t .................. ok
t/admin.t .................... ok
t/altid.t .................... ok
t/altid_v2.t ................. ok
t/cgi.t ...................... ok
t/config.t ................... 1/?
#   Failed test 'urlmatch hit'
#   at t/config.t line 249.
#          got: undef
#     expected: '9'
# Looks like you failed 1 test of 95.
t/config.t ................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/95 subtests
t/config_limiter.t ........... ok
...
t/eml.t ...................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/eml.t ...................... ok
t/eml_content_disposition.t .. ok
t/eml_content_type.t ......... ok
t/epoll.t .................... ok
t/extsearch.t ................ 4/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
/tmp/pi-extsearch-7425-uu6DWm/v1test: e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
/tmp/pi-extsearch-7425-uu6DWm/v1test: e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
v2test 0.git  24dce2a64c97ee93ded01e4846fb29bd42fd5794: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
v2test 0.git  24dce2a64c97ee93ded01e4846fb29bd42fd5794: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
[0] X=v2.example\0 395 407 1 24dce2a64c97ee93ded01e4846fb29bd42fd5794 0 0 1 testmessage@example.com: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 1.
...
[0] X=v2.example\0 395 407 1 24dce2a64c97ee93ded01e4846fb29bd42fd5794 0 0 1 testmessage@example.com: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 1.
v1test  e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
v1test  24dce2a64c97ee93ded01e4846fb29bd42fd5794: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/extsearch.t ................ 6/? v2test 0.git  a90dbf79129609b6b9f92d95b7f867d3787996f2: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
v2test 0.git  a90dbf79129609b6b9f92d95b7f867d3787996f2: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
v2test 0.git  a90dbf79129609b6b9f92d95b7f867d3787996f2: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/extsearch.t ................ 56/?  #1 e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
 #1 e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
 ...
 #1 e826130e3f1a89b68e41c17004bdb952893ea0ad: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
[0] X=v1.example\0 395 407 1 e826130e3f1a89b68e41c17004bdb952893ea0ad 0 0 6 testmessage@example.com: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 1.
...
[0] X=v1.example\0 395 407 1 e826130e3f1a89b68e41c17004bdb952893ea0ad 0 0 6 testmessage@example.com: Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 1.
t/extsearch.t ................ ok
...
t/filter_subjecttag.t ........ 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/filter_subjecttag.t ........ ok
...
t/import.t ................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/import.t ................... ok
t/inbox.t .................... ok
t/inbox_idle.t ............... 2/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 2.
t/inbox_idle.t ............... ok
...
t/mda.t ...................... 1/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/mda.t ...................... ok
...
t/nntpd-tls.t ................ skipped: certs/ missing for t/nntpd-tls.t, run /usr/bin/perl ./create-certs.perl in certs/
t/nntpd-v2.t ................. 3/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198, <$r> line 2.
t/nntpd-v2.t ................. 104/? # waiting for initial fetch...
# inbox unlocked on initial fetch
t/nntpd-v2.t ................. ok
t/nntpd.t .................... 3/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/nntpd.t .................... 104/? # waiting for initial fetch...
# inbox unlocked on initial fetch
t/nntpd.t .................... ok
...
t/search.t ................... 40/? Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
...
Use of uninitialized value in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.24/Encode/MIME/Header.pm line 198.
t/search.t ................... ok
...
t/xcpdb-reshard.t ............ ok

Test Summary Report
-------------------
t/config.t                 (Wstat: 256 Tests: 95 Failed: 1)
  Failed test:  94
  Non-zero exit status: 1
Files=112, Tests=4214, 109 wallclock secs ( 0.86 usr  0.08 sys + 24.04 cusr 11.98 csys = 36.96 CPU)
Result: FAIL
Failed 1/112 test programs. 1/4214 subtests failed.
Makefile:1308: recipe for target 'test_dynamic' failed
make: *** [test_dynamic] Error 255
"""

Packages (On Debian 9 where the issue reproduces):
"""
libalgorithm-diff-perl: 1.19.03-1
libalgorithm-diff-xs-perl: 0.04-4+b2
libalgorithm-merge-perl: 0.08-3
libapache-logformat-compiler-perl: 0.33-2
libauthen-sasl-perl: 2.1600-1
libcgi-compile-perl: 0.21-1
libcgi-emulate-psgi-perl: 0.22-1
libcgi-fast-perl: 1:2.12-1
libcgi-pm-perl: 4.35-1
libclass-inspector-perl: 1.31-1
libclass-isa-perl: 0.36-5
libcommon-sense-perl: 3.74-2
libcookie-baker-perl: 0.07-1
libcpanel-json-xs-perl: 3.0225-1
libcrypt-cbc-perl: 2.33-1
libcrypt-rijndael-perl: 1.13-1+b2
libdbd-sqlite3-perl: 1.54-1
libdbi-perl: 1.636-1+deb9u1
libdevel-globaldestruction-perl: 0.14-1
libdevel-stacktrace-ashtml-perl: 0.15-1
libdevel-stacktrace-perl: 2.0200-1
libdist-checkconflicts-perl: 0.11-1
libdpkg-perl: 1.18.25
libemail-address-perl: 1.908-1+deb9u1
libemail-date-format-perl: 1.005-1
libemail-messageid-perl: 1.406-1
libemail-mime-contenttype-perl: 1.018-1
libemail-mime-encodings-perl: 1.315-1
libemail-mime-perl: 1.937-1
libemail-simple-perl: 2.213-1
libencode-locale-perl: 1.05-1
libencode-perl: 2.88-1
liberror-perl: 0.17024-1
libfcgi-perl: 0.78-2
libfcgi-procmanager-perl: 0.25-1
libfile-fcntllock-perl: 0.22-3+b2
libfile-listing-perl: 6.04-1
libfile-pushd-perl: 1.014-1
libfile-sharedir-perl: 1.102-1
libfilesys-notify-simple-perl: 0.12-1
libfont-afm-perl: 1.20-2
libhash-multivalue-perl: 0.16-1
libhighlight-perl: 3.18-3+b5
libhtml-form-perl: 6.03-1
libhtml-format-perl: 2.12-1
libhtml-parser-perl: 3.72-3
libhtml-tagset-perl: 3.20-3
libhtml-tree-perl: 5.03-2
libhttp-cookies-perl: 6.01-1
libhttp-daemon-perl: 6.01-1
libhttp-date-perl: 6.02-1
libhttp-entity-parser-perl: 0.18-1
libhttp-headers-fast-perl: 0.20-1
libhttp-message-perl: 6.11-1
libhttp-multipartparser-perl: 0.01-1
libhttp-negotiate-perl: 6.00-2
libinline-c-perl: 0.76-1
libinline-files-perl: 0.68-1
libinline-perl: 0.80-1
libio-html-perl: 1.001-1
libio-multiplex-perl: 1.16-1
libio-socket-inet6-perl: 2.72-2
libio-socket-ssl-perl: 2.044-1
libipc-shareable-perl: 0.61-1
libjson-maybexs-perl: 1.003008-1
liblinux-inotify2-perl: 1:1.22-3
liblocale-gettext-perl: 1.07-3+b1
liblog-dispatch-perl: 2.58-1
liblog-log4perl-perl: 1.48-1+deb9u1
liblwp-mediatypes-perl: 6.02-1
liblwp-protocol-https-perl: 6.06-2
libmail-sendmail-perl: 0.79.16-2
libmailtools-perl: 2.18-1
libmime-lite-perl: 3.030-2
libmime-types-perl: 2.13-1
libmodule-implementation-perl: 0.09-1
libmodule-refresh-perl: 0.17-1
libmodule-runtime-perl: 0.014-2
libnet-cidr-perl: 0.18-1
libnet-http-perl: 6.12-1
libnet-server-perl: 2.008-3
libnet-smtp-ssl-perl: 1.04-1
libnet-ssleay-perl: 1.80-1
libparams-classify-perl: 0.013-6+b1
libparams-validate-perl: 1.26-1
libparse-recdescent-perl: 1.967013+dfsg-1
libpcre3: 2:8.39-3
libpegex-perl: 0.63-1
libperl5.24: 5.24.1-3+deb9u7
libplack-middleware-deflater-perl: 0.12-1
libplack-middleware-reverseproxy-perl: 0.15-1
libplack-perl: 1.0042-1
libposix-strftime-compiler-perl: 0.42-1
libsearch-xapian-perl: 1.2.24.0-1
libsocket6-perl: 0.27-1+b1
libstream-buffered-perl: 0.03-1
libsub-exporter-progressive-perl: 0.001013-1
libswitch-perl: 2.17-2
libsys-hostname-long-perl: 1.5-1
libtest-sharedfork-perl: 0.35-1
libtest-tcp-perl: 2.17-1
libtext-charwidth-perl: 0.04-7+b5
libtext-iconv-perl: 1.7-5+b4
libtext-wrapi18n-perl: 0.06-7.1
libtimedate-perl: 2.3000-2+deb9u1
libtry-tiny-perl: 0.28-1
liburi-perl: 1.71-1
libwww-form-urlencoded-perl: 0.23-2
libwww-form-urlencoded-xs-perl: 0.23-1
libwww-perl: 6.15-1
libwww-robotrules-perl: 6.01-1
libxapian30: 1.4.3-2+deb9u3
libxml-treepp-perl: 0.43-1
perl: 5.24.1-3+deb9u7
perl-base: 5.24.1-3+deb9u7
perl-modules-5.24: 5.24.1-3+deb9u7
perl-openssl-defaults: 3
xapian-tools: 1.4.3-2+deb9u3
"""

The uninitialized value warnings and test errors do not reproduce on Debian 10 (buster) with packages:
"""
libalgorithm-c3-perl: 0.10-1
libalgorithm-diff-perl: 1.19.03-2
libalgorithm-diff-xs-perl: 0.04-5+b1
libalgorithm-merge-perl: 0.08-3
libapache-logformat-compiler-perl: 0.35-1
libauthen-sasl-perl: 2.1600-1
libb-hooks-endofscope-perl: 0.24-1
libb-hooks-op-check-perl: 0.22-1+b1
libcgi-compile-perl: 0.22-2
libcgi-emulate-psgi-perl: 0.23-1
libcgi-fast-perl: 1:2.13-1
libcgi-pm-perl: 4.40-1
libclass-c3-perl: 0.34-1
libclass-c3-xs-perl: 0.14-1+b3
libclass-data-inheritable-perl: 0.08-3
libclass-inspector-perl: 1.32-1
libclass-method-modifiers-perl: 2.12-1
libclass-xsaccessor-perl: 1.19-3+b2
libcommon-sense-perl: 3.74-2+b7
libcookie-baker-perl: 0.10-4
libcookie-baker-xs-perl: 0.10-1+b1
libcpanel-json-xs-perl: 4.09-1
libcrypt-cbc-perl: 2.33-2
libcrypt-rijndael-perl: 1.13-1+b5
libdata-dump-perl: 1.23-1
libdata-optlist-perl: 0.110-1
libdbd-sqlite3-perl: 1.62-3
libdbi-perl: 1.642-1+deb10u1
libdevel-callchecker-perl: 0.008-1
libdevel-caller-perl: 2.06-2+b1
libdevel-globaldestruction-perl: 0.14-1
libdevel-lexalias-perl: 0.05-2+b1
libdevel-stacktrace-ashtml-perl: 0.15-1
libdevel-stacktrace-perl: 2.0300-1
libdist-checkconflicts-perl: 0.11-1
libdpkg-perl: 1.19.7
libdynaloader-functions-perl: 0.003-1
libemail-address-xs-perl: 1.04-1+b1
libemail-date-format-perl: 1.005-1
libemail-messageid-perl: 1.406-1
libemail-mime-contenttype-perl: 1.022-1
libemail-mime-encodings-perl: 1.315-2
libemail-mime-perl: 1.946-1
libemail-simple-perl: 2.216-1
libencode-locale-perl: 1.05-1
libencode-perl: 3.00-1
liberror-perl: 0.17027-2
libeval-closure-perl: 0.14-1
libexception-class-perl: 1.44-1
libfcgi-perl: 0.78-2+b3
libfcgi-procmanager-perl: 0.28-1
libfile-fcntllock-perl: 0.22-3+b5
libfile-listing-perl: 6.04-1
libfile-pushd-perl: 1.016-1
libfile-sharedir-perl: 1.116-2
libfilesys-notify-simple-perl: 0.13-1
libfont-afm-perl: 1.20-2
libhash-multivalue-perl: 0.16-1
libhighlight-perl: 3.41-2+b1
libhtml-form-perl: 6.03-1
libhtml-format-perl: 2.12-1
libhtml-parser-perl: 3.72-3+b3
libhtml-tagset-perl: 3.20-3
libhtml-tree-perl: 5.07-2
libhttp-cookies-perl: 6.04-1
libhttp-daemon-perl: 6.01-3
libhttp-date-perl: 6.02-1
libhttp-entity-parser-perl: 0.21-1
libhttp-headers-fast-perl: 0.21-1
libhttp-message-perl: 6.18-1
libhttp-multipartparser-perl: 0.02-1
libhttp-negotiate-perl: 6.01-1
libinline-c-perl: 0.78-1
libinline-files-perl: 0.68-1
libinline-perl: 0.81-1
libio-html-perl: 1.001-1
libio-multiplex-perl: 1.16-1
libio-socket-inet6-perl: 2.72-2
libio-socket-ssl-perl: 2.060-3
libipc-shareable-perl: 0.61-2
libjson-maybexs-perl: 1.004000-1
liblinux-inotify2-perl: 1:2.1-1
liblocale-gettext-perl: 1.07-3+b4
liblog-dispatch-perl: 2.68-1
liblog-log4perl-perl: 1.49-1
liblwp-mediatypes-perl: 6.02-1
liblwp-protocol-https-perl: 6.07-2
libmail-sendmail-perl: 0.80-1
libmailtools-perl: 2.18-1
libmime-lite-perl: 3.030-2
libmime-types-perl: 2.17-1
libmodule-implementation-perl: 0.09-1
libmodule-refresh-perl: 0.17-1
libmodule-runtime-perl: 0.016-1
libmro-compat-perl: 0.13-1
libnamespace-autoclean-perl: 0.28-1
libnamespace-clean-perl: 0.27-1
libnet-cidr-perl: 0.19-1
libnet-http-perl: 6.18-1
libnet-server-perl: 2.009-1
libnet-smtp-ssl-perl: 1.04-1
libnet-ssleay-perl: 1.85-2+b1
libpackage-stash-perl: 0.38-1
libpackage-stash-xs-perl: 0.29-1
libpadwalker-perl: 2.3-1+b1
libparams-classify-perl: 0.015-1+b1
libparams-util-perl: 1.07-3+b4
libparams-validationcompiler-perl: 0.30-1
libparse-recdescent-perl: 1.967015+dfsg-2
libpcre2-8-0: 10.32-5
libpcre3: 2:8.39-12
libpegex-perl: 0.70-1
libperl5.28: 5.28.1-6+deb10u1
libplack-middleware-deflater-perl: 0.12-2
libplack-middleware-reverseproxy-perl: 0.16-1
libplack-perl: 1.0047-1
libposix-strftime-compiler-perl: 0.42-1
libreadonly-perl: 2.050-1
libref-util-perl: 0.204-1
libref-util-xs-perl: 0.117-1+b1
librole-tiny-perl: 2.000006-1
libsearch-xapian-perl: 1.2.25.2-1+b2
libsocket6-perl: 0.29-1+b1
libspecio-perl: 0.43-1
libstream-buffered-perl: 0.03-1
libsub-exporter-perl: 0.987-1
libsub-exporter-progressive-perl: 0.001013-1
libsub-identify-perl: 0.14-1+b1
libsub-install-perl: 0.928-1
libsub-name-perl: 0.21-1+b3
libsub-quote-perl: 2.005001-1
libsys-hostname-long-perl: 1.5-1
libtest-sharedfork-perl: 0.35-1
libtest-tcp-perl: 2.19-1
libtext-charwidth-perl: 0.04-7.1+b1
libtext-iconv-perl: 1.7-5+b7
libtext-wrapi18n-perl: 0.06-7.1
libtimedate-perl: 2.3000-2+deb10u1
libtry-tiny-perl: 0.30-1
liburi-perl: 1.76-1
libvariable-magic-perl: 0.62-1+b1
libwww-form-urlencoded-perl: 0.25-1
libwww-form-urlencoded-xs-perl: 0.25-1+b1
libwww-perl: 6.36-2
libwww-robotrules-perl: 6.02-1
libxapian30: 1.4.11-1
libxml-treepp-perl: 0.43-1
perl: 5.28.1-6+deb10u1
perl-base: 5.28.1-6+deb10u1
perl-modules-5.28: 5.28.1-6+deb10u1
perl-openssl-defaults: 3
xapian-tools: 1.4.11-1
"""

Thanks in advance for helping,

- Ali

^ permalink raw reply	[relevance 4%]

* [PATCH 10/13] eml: remove dependency on Email::MIME::Encodings
  2020-05-07 21:05  7% [PATCH 00/13] eml: pure-Perl replacement for Email::MIME Eric Wong
@ 2020-05-07 21:05  6% ` Eric Wong
  0 siblings, 0 replies; 3+ results
From: Eric Wong @ 2020-05-07 21:05 UTC (permalink / raw)
  To: meta

Since Email::MIME usage is going away, Email::MIME::Encodings
might as well go away, too.  We can also use fewer branches
and just rely on hash lookups, unlike E::M::E.
---
 lib/PublicInbox/Eml.pm | 47 ++++++++++++++++++++++++++++++------------
 1 file changed, 34 insertions(+), 13 deletions(-)

diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm
index 1988bdb3..1adaff04 100644
--- a/lib/PublicInbox/Eml.pm
+++ b/lib/PublicInbox/Eml.pm
@@ -30,18 +30,24 @@ use v5.10.1;
 use Carp qw(croak);
 use Encode qw(find_encoding decode encode); # stdlib
 use Text::Wrap qw(wrap); # stdlib, we need Perl 5.6+ for $huge
+use MIME::Base64 3.05; # Perl 5.10.0 / 5.9.2
+use MIME::QuotedPrint 3.05; # ditto
 
 my $MIME_Header = find_encoding('MIME-Header');
 
 use PublicInbox::EmlContentFoo qw(parse_content_type parse_content_disposition);
-use Email::MIME::Encodings;
 $PublicInbox::EmlContentFoo::STRICT_PARAMS = 0;
 
 our $MAXPARTS = 1000; # same as SpamAssassin
 our $MAXDEPTH = 20; # seems enough, Perl sucks, here
 our $MAXBOUNDLEN = 2048; # same as postfix
 
-my $NO_ENCODE_RE = qr/\A(?:7bit|8bit|binary)[ \t]*(?:;|$)?/i;
+my %MIME_ENC = (qp => \&enc_qp, base64 => \&encode_base64);
+my %MIME_DEC = (qp => \&dec_qp, base64 => \&decode_base64);
+$MIME_ENC{quotedprint} = $MIME_ENC{'quoted-printable'} = $MIME_ENC{qp};
+$MIME_DEC{quotedprint} = $MIME_DEC{'quoted-printable'} = $MIME_DEC{qp};
+$MIME_ENC{$_} = \&identity_codec for qw(7bit 8bit binary);
+
 my %DECODE_ADDRESS = map { $_ => 1 } qw(From To Cc Sender Reply-To);
 my %DECODE_FULL = (
 	Subject => 1,
@@ -111,13 +117,6 @@ sub ct ($) {
 	$_[0]->{ct} //= parse_content_type(header($_[0], 'Content-Type'));
 }
 
-sub body_decode ($$) {
-	my $cte = header_raw($_[0], 'Content-Transfer-Encoding');
-	($cte) = ($cte =~ /([a-zA-Z0-9\-]+)/) if $cte; # For S/MIME, etc
-	(!$cte || $cte =~ $NO_ENCODE_RE) ?
-		$_[1] : Email::MIME::Encodings::decode($cte, $_[1], '7bit');
-}
-
 # returns a queue of sub-parts iff it's worth descending into
 # TODO: descend into message/rfc822 parts (Email::MIME didn't)
 sub mp_descend ($$) {
@@ -197,6 +196,22 @@ sub each_part {
 	}
 }
 
+sub enc_qp {
+	# prevent MIME::QuotedPrint from encoding CR as =0D since it's
+	# against RFCs and breaks MUAs
+	$_[0] =~ s/\r\n/\n/sg;
+	encode_qp($_[0], "\r\n");
+}
+
+sub dec_qp {
+	# RFC 2822 requires all lines to end in CRLF, though... :<
+	$_[0] = decode_qp($_[0]);
+	$_[0] =~ s/\n/\r\n/sg;
+	$_[0]
+}
+
+sub identity_codec { $_[0] }
+
 ########### compatibility section for existing Email::MIME uses #########
 
 sub header_obj {
@@ -240,9 +255,9 @@ EOF
 sub body_set {
 	my ($self, $body) = @_;
 	my $bdy = $self->{bdy} = ref($body) ? $body : \$body;
-	my $cte = header_raw($self, 'Content-Transfer-Encoding');
-	if ($cte && $cte !~ $NO_ENCODE_RE) {
-		$$bdy = Email::MIME::Encodings::encode($cte, $$bdy)
+	if (my $cte = header_raw($self, 'Content-Transfer-Encoding')) {
+		my $enc = $MIME_ENC{lc($cte)} or croak("can't encode `$cte'");
+		$$bdy = $enc->($$bdy); # in-place
 	}
 	undef;
 }
@@ -351,7 +366,13 @@ sub header_str {
 
 sub body_raw { ${$_[0]->{bdy} // \''}; }
 
-sub body { body_decode($_[0], body_raw($_[0])) }
+sub body {
+	my $raw = body_raw($_[0]);
+	my $cte = header_raw($_[0], 'Content-Transfer-Encoding') or return $raw;
+	($cte) = ($cte =~ /([a-zA-Z0-9\-]+)/) or return $raw; # For S/MIME, etc
+	my $dec = $MIME_DEC{lc($cte)} or return $raw;
+	$dec->($raw);
+}
 
 sub body_str {
 	my ($self) = @_;

^ permalink raw reply related	[relevance 6%]

* [PATCH 00/13] eml: pure-Perl replacement for Email::MIME
@ 2020-05-07 21:05  7% Eric Wong
  2020-05-07 21:05  6% ` [PATCH 10/13] eml: remove dependency on Email::MIME::Encodings Eric Wong
  0 siblings, 1 reply; 3+ results
From: Eric Wong @ 2020-05-07 21:05 UTC (permalink / raw)
  To: meta

Eric Wong (13):
  msg_iter: make ->each_part method for PublicInbox::MIME
  msg_iter: pass $idx as a scalar, not array
  filter/rubylang: avoid recursing subparts to strip trailers
  smsg: use capitalization for header retrieval
  eml: pure-Perl replacement for Email::MIME
  switch read-only Email::Simple users to Eml
  replace most uses of PublicInbox::MIME with Eml
  EmlContentFoo: Email::MIME::ContentType replacement
  EmlContentFoo: relax Encode version requirement
  eml: remove dependency on Email::MIME::Encodings
  xt: eml comparison tests
  remove most internal Email::MIME usage
  eml: drop trailing blank line on missing epilogue

 Documentation/mknews.perl          |   4 +-
 INSTALL                            |  26 +-
 MANIFEST                           |   7 +
 Makefile.PL                        |   7 +-
 ci/deps.perl                       |   3 -
 lib/PublicInbox/Admin.pm           |   2 +-
 lib/PublicInbox/Eml.pm             | 421 +++++++++++++++++++++++++++++
 lib/PublicInbox/EmlContentFoo.pm   | 317 ++++++++++++++++++++++
 lib/PublicInbox/Filter/RubyLang.pm |  32 ++-
 lib/PublicInbox/Filter/Vger.pm     |   4 +-
 lib/PublicInbox/Import.pm          |  11 +-
 lib/PublicInbox/Inbox.pm           |   4 +-
 lib/PublicInbox/InboxWritable.pm   |   4 +-
 lib/PublicInbox/MDA.pm             |   1 -
 lib/PublicInbox/MIME.pm            |   6 +
 lib/PublicInbox/Mbox.pm            |  16 +-
 lib/PublicInbox/MboxGz.pm          |   4 +-
 lib/PublicInbox/MsgIter.pm         |  21 +-
 lib/PublicInbox/MsgTime.pm         |   8 +-
 lib/PublicInbox/NNTP.pm            |  19 +-
 lib/PublicInbox/SearchIdx.pm       |   8 +-
 lib/PublicInbox/SearchIdxShard.pm  |   3 +-
 lib/PublicInbox/Smsg.pm            |  24 +-
 lib/PublicInbox/SolverGit.pm       |   4 +-
 lib/PublicInbox/TestCommon.pm      |  11 +-
 lib/PublicInbox/V2Writable.pm      |  17 +-
 lib/PublicInbox/View.pm            |  28 +-
 lib/PublicInbox/WWW.pm             |   8 +-
 lib/PublicInbox/WatchMaildir.pm    |   4 +-
 lib/PublicInbox/WwwAttach.pm       |  15 +-
 script/public-inbox-edit           |   8 +-
 script/public-inbox-learn          |   4 +-
 script/public-inbox-mda            |  16 +-
 script/public-inbox-purge          |   4 +-
 t/altid.t                          |   4 +-
 t/altid_v2.t                       |   4 +-
 t/cgi.t                            |   8 +-
 t/content_id.t                     |   6 +-
 t/convert-compact.t                |   4 +-
 t/edit.t                           |  20 +-
 t/eml.t                            | 363 +++++++++++++++++++++++++
 t/eml_content_disposition.t        | 102 +++++++
 t/eml_content_type.t               | 289 ++++++++++++++++++++
 t/feed.t                           |   6 +-
 t/filter_base.t                    |   4 +-
 t/filter_mirror.t                  |   2 +-
 t/filter_rubylang.t                |   8 +-
 t/filter_subjecttag.t              |   4 +-
 t/filter_vger.t                    |   6 +-
 t/html_index.t                     |   4 +-
 t/httpd.t                          |   4 +-
 t/import.t                         |   6 +-
 t/indexlevels-mirror.t             |   4 +-
 t/mda.t                            |   4 +-
 t/mda_filter_rubylang.t            |   2 +-
 t/mid.t                            |   4 +-
 t/mime.t                           |  82 +++---
 t/msg_iter.t                       |  10 +-
 t/msgtime.t                        |   6 +-
 t/multi-mid.t                      |   6 +-
 t/nntp.t                           |   4 +-
 t/nntpd-tls.t                      |   4 +-
 t/nntpd.t                          |   6 +-
 t/nulsubject.t                     |   2 +-
 t/plack.t                          |  10 +-
 t/precheck.t                       |  10 +-
 t/psgi_attach.t                    |   2 +-
 t/psgi_bad_mids.t                  |   4 +-
 t/psgi_mount.t                     |   4 +-
 t/psgi_multipart_not.t             |   4 +-
 t/psgi_scan_all.t                  |   4 +-
 t/psgi_search.t                    |   8 +-
 t/psgi_text.t                      |   2 +-
 t/psgi_v2.t                        |   6 +-
 t/purge.t                          |   2 +-
 t/replace.t                        |  12 +-
 t/reply.t                          |   4 +-
 t/search-thr-index.t               |   6 +-
 t/search.t                         |  26 +-
 t/solver_git.t                     |   4 +-
 t/spamcheck_spamc.t                |   8 +-
 t/thread-cycle.t                   |   3 +-
 t/time.t                           |   4 +-
 t/v1-add-remove-add.t              |   4 +-
 t/v1reindex.t                      |   4 +-
 t/v2-add-remove-add.t              |   4 +-
 t/v2mda.t                          |   4 +-
 t/v2mirror.t                       |   4 +-
 t/v2reindex.t                      |   8 +-
 t/v2writable.t                     |   8 +-
 t/watch_filter_rubylang.t          |   2 +-
 t/watch_maildir.t                  |   2 +-
 t/watch_maildir_v2.t               |   2 +-
 t/www_altid.t                      |   2 +-
 t/xcpdb-reshard.t                  |   4 +-
 xt/cmp-msgstr.t                    | 108 ++++++++
 xt/cmp-msgview.t                   |  95 +++++++
 xt/msgtime_cmp.t                   |  12 +-
 xt/perf-msgview.t                  |   2 +-
 99 files changed, 2084 insertions(+), 353 deletions(-)
 create mode 100644 lib/PublicInbox/Eml.pm
 create mode 100644 lib/PublicInbox/EmlContentFoo.pm
 create mode 100644 t/eml.t
 create mode 100644 t/eml_content_disposition.t
 create mode 100644 t/eml_content_type.t
 create mode 100644 xt/cmp-msgstr.t
 create mode 100644 xt/cmp-msgview.t


^ permalink raw reply	[relevance 7%]

Results 1-3 of 3 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2020-05-07 21:05  7% [PATCH 00/13] eml: pure-Perl replacement for Email::MIME Eric Wong
2020-05-07 21:05  6% ` [PATCH 10/13] eml: remove dependency on Email::MIME::Encodings Eric Wong
2020-12-26 11:27  4% [Debian 9][Perl 5.24] uninitialized value errors in Encode/MIME/Header.pm Ali Alnubani

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).