From 068b366709d005275727a0e8929d272c04cb7bd8 Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Tue, 28 May 2024 12:17:06 +1200 Subject: [PATCH] buildtools:pidl: avoid hash randomisation in pidl Like many languages, Perl uses has randomisation to prevent nasty users using crafted values that hash to the same number to effect a denial of service. This means the traversal order of perl HASH tables is different every time. The IDL handed to pidl is trusted, so we don't really need randomisation, but we do want to be sure the build is the same every time. I am not aware of hash randomisation causing problems, but it seems prudent to avoid it. We do a similar thing with PYTHONHASHSEED for the entire build. Thanks to Freexian and the Debian LTS project for sponsoring this work. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13213 Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- buildtools/wafsamba/samba_pidl.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buildtools/wafsamba/samba_pidl.py b/buildtools/wafsamba/samba_pidl.py index 72997c8bf84..e1010869cdd 100644 --- a/buildtools/wafsamba/samba_pidl.py +++ b/buildtools/wafsamba/samba_pidl.py @@ -81,7 +81,9 @@ def SAMBA_PIDL(bld, pname, source, else: cc = 'CC="%s"' % bld.CONFIG_GET("CC") - t = bld(rule='cd ${PIDL_LAUNCH_DIR} && %s%s %s ${PERL} ${PIDL} --quiet ${OPTIONS} --outputdir ${OUTPUTDIR} -- "${IDLSRC}"' % (pidl_dev, cpp, cc), + t = bld(rule=('cd ${PIDL_LAUNCH_DIR} && PERL_HASH_SEED=0 %s%s %s ${PERL} ' + '${PIDL} --quiet ${OPTIONS} --outputdir ${OUTPUTDIR} -- "${IDLSRC}"' % + (pidl_dev, cpp, cc)), ext_out = '.c', before = 'c', update_outputs = True, -- 2.47.3