details:   https://code.tryton.org/tryton/commit/46185b14a13b
branch:    8.0
user:      Cédric Krier <[email protected]>
date:      Tue Aug 04 10:38:45 2026 +0200
description:
        Restrict protocols allowed for weasyprint to http(s)

        Closes #14947
        (grafted from 7c72806c98c07bb4ccb1f5f1b84954350541ec3a)
diffstat:

 trytond/CHANGELOG                |  1 +
 trytond/pyproject.toml           |  2 +-
 trytond/trytond/report/report.py |  7 ++++++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diffs (37 lines):

diff -r 9ff4a22447cc -r 46185b14a13b trytond/CHANGELOG
--- a/trytond/CHANGELOG Thu Jul 30 16:37:30 2026 +0200
+++ b/trytond/CHANGELOG Tue Aug 04 10:38:45 2026 +0200
@@ -1,3 +1,4 @@
+* Restrict protocols allowed for weasyprint to http(s) (issue14947)
 
 Version 8.0.7 - 2026-07-15
 --------------------------
diff -r 9ff4a22447cc -r 46185b14a13b trytond/pyproject.toml
--- a/trytond/pyproject.toml    Thu Jul 30 16:37:30 2026 +0200
+++ b/trytond/pyproject.toml    Tue Aug 04 10:38:45 2026 +0200
@@ -60,7 +60,7 @@
     'pillow',
     'pydot',
     ]
-weasyprint = ['weasyprint']
+weasyprint = ['weasyprint >= 68.0']
 
 [project.scripts]
 trytond = 'trytond.cli:main'
diff -r 9ff4a22447cc -r 46185b14a13b trytond/trytond/report/report.py
--- a/trytond/trytond/report/report.py  Thu Jul 30 16:37:30 2026 +0200
+++ b/trytond/trytond/report/report.py  Tue Aug 04 10:38:45 2026 +0200
@@ -414,7 +414,12 @@
         if (input_format in {'html', 'xhtml'}
                 and output_format == 'pdf'):
             if weasyprint := _lazy_import('weasyprint'):
-                return output_format, weasyprint.HTML(string=data).write_pdf()
+                return output_format, weasyprint.HTML(
+                    string=data,
+                    url_fetcher=weasyprint.URLFetcher(
+                        allowed_protocols={'http', 'https'},
+                        ),
+                    ).write_pdf()
 
         if (input_format == 'xml'
                 and output_format == 'html'

Reply via email to