ROOTPLOIT
Server: LiteSpeed
System: Linux in-mum-web1878.main-hosting.eu 5.14.0-570.21.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 11 07:22:35 EDT 2025 x86_64
User: u435929562 (435929562)
PHP: 7.4.33
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //lib/kernel/install.d/10-devicetree.install
#!/usr/bin/bash

# set -x

if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]
then
COMMAND="$1"
KERNEL_VERSION="$2"
#BOOT_DIR_ABS="$3"
#KERNEL_IMAGE="$4"

[ -f /etc/u-boot.conf ] && source /etc/u-boot.conf || true
[ -z "$FIRMWAREDT" ] || FirmwareDT=$FIRMWAREDT

if [[ $FirmwareDT == "True" ]]
then
	# if we want to use firmware DT we remove symlink to current kernel DT
        if [ -h /boot/dtb ]; then
            rm -f /boot/dtb
        fi
	exit 0
fi

# Setup a /boot/dtb -> /boot/dtb-$newest_kernel_version symlink so that
# u-boot can find the correct dtb to load.
#
# If invoked to 'add' a new kernel, find the newest based on `sort`ing
# the kernel versions dtb.  If 'remove', then follow basically the same
# procedure but exclude the version currently being removed.
#
# The theory of operation here is that, while newer kernels may add new
# dtb nodes and fields, as upstreaming hw support for some particular
# device progresses, it should never make backward incompatible changes.
# So it should always be safe to use a newer dtb with an older kernel.

    list_dtb_versions() {
        excluded_version="$1"
        for dtbdir in /boot/dtb-*; do
            dtbver=${dtbdir#*-}
            if [ "$dtbver" != "$excluded_version" ]; then
                echo $dtbver
            fi
        done
    }

    setup_dtb_link() {
        ver=`list_dtb_versions $1 | sort -r --sort=version | head -1`
        if [ -h /boot/dtb ]; then
            rm -f /boot/dtb
        fi
        ln -s dtb-$ver /boot/dtb
    }

    ret=0
    case "$COMMAND" in
        add)
            # If we're adding a kernel we want that version
            if [ -h /boot/dtb ]; then
                rm -f /boot/dtb
            fi
            ln -s dtb-$KERNEL_VERSION /boot/dtb
            ret=$?
            ;;
        remove)
            setup_dtb_link $KERNEL_VERSION
            ret=$?
            ;;
    esac
    exit $ret
else
    # Just exit on non ARM
    exit 0
fi