[PATCH] oss-fuzz: remove binaries from qemu-bundle tree

Paolo Bonzini posted 1 patch 1 year, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220720084009.603423-1-pbonzini@redhat.com
Maintainers: Alexander Bulekov <alxndr@bu.edu>, Paolo Bonzini <pbonzini@redhat.com>, Bandan Das <bsd@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Thomas Huth <thuth@redhat.com>, Darren Kenny <darren.kenny@oracle.com>, Qiuhao Li <Qiuhao.Li@outlook.com>
scripts/oss-fuzz/build.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] oss-fuzz: remove binaries from qemu-bundle tree
Posted by Paolo Bonzini 1 year, 8 months ago
oss-fuzz is finding possible fuzzing targets even under qemu-bundle/.../bin, but they
cannot be used because the required shared libraries are missing.  Since the
fuzzing targets are already placed manually in $OUT, the bindir and libexecdir
subtrees are not needed; remove them.

Cc: Alexander Bulekov <alxndr@bu.edu>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 scripts/oss-fuzz/build.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh
index 2656a89aea..5ee9141e3e 100755
--- a/scripts/oss-fuzz/build.sh
+++ b/scripts/oss-fuzz/build.sh
@@ -87,8 +87,10 @@ if [ "$GITLAB_CI" != "true" ]; then
     make "-j$(nproc)" qemu-fuzz-i386 V=1
 fi
 
-# Prepare a preinstalled tree
+# Place data files in the preinstall tree
 make install DESTDIR=$DEST_DIR/qemu-bundle
+rm -rf $DEST_DIR/qemu-bundle/opt/qemu-oss-fuzz/bin
+rm -rf $DEST_DIR/qemu-bundle/opt/qemu-oss-fuzz/libexec
 
 targets=$(./qemu-fuzz-i386 | awk '$1 ~ /\*/  {print $2}')
 base_copy="$DEST_DIR/qemu-fuzz-i386-target-$(echo "$targets" | head -n 1)"
-- 
2.36.1
Re: [PATCH] oss-fuzz: remove binaries from qemu-bundle tree
Posted by Alexander Bulekov 1 year, 8 months ago
On 220720 1040, Paolo Bonzini wrote:
> oss-fuzz is finding possible fuzzing targets even under qemu-bundle/.../bin, but they
> cannot be used because the required shared libraries are missing.  Since the
> fuzzing targets are already placed manually in $OUT, the bindir and libexecdir
> subtrees are not needed; remove them.

Thank you for catching this. OSS-Fuzz shouldn't be treating binaries in
subdirectories as fuzzers. For the initial integration we even had to
make modifications to how qemu looks for the datadir, because of this
requirement.. And at least parts of OSS-Fuzz will not try to look for
fuzzers in subdirectories. Thats why the build and build-checks have
been succeeding: 
https://oss-fuzz-build-logs.storage.googleapis.com/index.html#qemu
How fuzz targets are enumerated for the build-test:
https://github.com/google/oss-fuzz/blob/4138b03a9871e09d5d25753681c489aab006d830/infra/base-images/base-runner/test_all.py#L70

However, the oss-fuzz internals must be using some different method to
find targets, which looks in subdirectories, as well...

> 
> Cc: Alexander Bulekov <alxndr@bu.edu>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: Alexander Bulekov <alxndr@bu.edu>

> ---
>  scripts/oss-fuzz/build.sh | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh
> index 2656a89aea..5ee9141e3e 100755
> --- a/scripts/oss-fuzz/build.sh
> +++ b/scripts/oss-fuzz/build.sh
> @@ -87,8 +87,10 @@ if [ "$GITLAB_CI" != "true" ]; then
>      make "-j$(nproc)" qemu-fuzz-i386 V=1
>  fi
>  
> -# Prepare a preinstalled tree
> +# Place data files in the preinstall tree
>  make install DESTDIR=$DEST_DIR/qemu-bundle
> +rm -rf $DEST_DIR/qemu-bundle/opt/qemu-oss-fuzz/bin
> +rm -rf $DEST_DIR/qemu-bundle/opt/qemu-oss-fuzz/libexec
>  
>  targets=$(./qemu-fuzz-i386 | awk '$1 ~ /\*/  {print $2}')
>  base_copy="$DEST_DIR/qemu-fuzz-i386-target-$(echo "$targets" | head -n 1)"
> -- 
> 2.36.1
>