commit:     831dd1209afaf2553baef3264b46b062d76e80b6
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 21 03:31:14 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 21 03:31:32 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=831dd120

net-misc/rsync: handle ubsan

Pass -DCAREFUL_ALIGNMENT if building with -fsanitize=undefined to disable
intentional unaligned accesses which UBSAN would otherwise flag.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-misc/rsync/rsync-3.2.7-r2.ebuild | 10 +++++++++-
 net-misc/rsync/rsync-9999.ebuild     | 14 +++++++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/net-misc/rsync/rsync-3.2.7-r2.ebuild 
b/net-misc/rsync/rsync-3.2.7-r2.ebuild
index fae9369c193c..4dc746f9c96a 100644
--- a/net-misc/rsync/rsync-3.2.7-r2.ebuild
+++ b/net-misc/rsync/rsync-3.2.7-r2.ebuild
@@ -6,7 +6,7 @@ EAPI=8
 # Uncomment when introducing a patch which touches configure
 #RSYNC_NEEDS_AUTOCONF=1
 PYTHON_COMPAT=( python3_{9..11} )
-inherit prefix python-single-r1 systemd
+inherit flag-o-matic prefix python-single-r1 systemd
 
 DESCRIPTION="File transfer program to keep remote files into sync"
 HOMEPAGE="https://rsync.samba.org/";
@@ -125,6 +125,14 @@ src_configure() {
                $(use_enable zstd)
        )
 
+       # https://github.com/WayneD/rsync/pull/428
+       if is-flagq -fsanitize=undefined ; then
+               sed -E -i \
+                       -e 's:#define CAREFUL_ALIGNMENT (0|1):#define 
CAREFUL_ALIGNMENT 1:' \
+                       byteorder.h || die
+               append-flags -DCAREFUL_ALIGNMENT
+       fi
+
        econf "${myeconfargs[@]}"
 }
 

diff --git a/net-misc/rsync/rsync-9999.ebuild b/net-misc/rsync/rsync-9999.ebuild
index 4d23490d778c..4dc746f9c96a 100644
--- a/net-misc/rsync/rsync-9999.ebuild
+++ b/net-misc/rsync/rsync-9999.ebuild
@@ -6,7 +6,7 @@ EAPI=8
 # Uncomment when introducing a patch which touches configure
 #RSYNC_NEEDS_AUTOCONF=1
 PYTHON_COMPAT=( python3_{9..11} )
-inherit prefix python-single-r1 systemd
+inherit flag-o-matic prefix python-single-r1 systemd
 
 DESCRIPTION="File transfer program to keep remote files into sync"
 HOMEPAGE="https://rsync.samba.org/";
@@ -76,6 +76,10 @@ else
        BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-waynedavison )"
 fi
 
+PATCHES=(
+       "${FILESDIR}"/${P}-flist-memcmp-ub.patch
+)
+
 pkg_setup() {
        # - USE=examples needs Python itself at runtime, but nothing else
        # - 9999 needs commonmark at build time
@@ -121,6 +125,14 @@ src_configure() {
                $(use_enable zstd)
        )
 
+       # https://github.com/WayneD/rsync/pull/428
+       if is-flagq -fsanitize=undefined ; then
+               sed -E -i \
+                       -e 's:#define CAREFUL_ALIGNMENT (0|1):#define 
CAREFUL_ALIGNMENT 1:' \
+                       byteorder.h || die
+               append-flags -DCAREFUL_ALIGNMENT
+       fi
+
        econf "${myeconfargs[@]}"
 }
 

Reply via email to