Files
lbmk/mk
Leah Rowe 5096e0040f mk: hardened PWD check (deny symlinks)
we check if the first argument is "./mk" and bail if not,
which forces you to be in the xbmk work directory.

however, this check is flawed because symlinks were still
possible.

this patch prevents a same-named symlink "mk" pointing to
the real mk from being used.

this hardening is necessary, due to several built-in
assumptions inherent within the design of xbmk.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-05 11:46:16 +01:00

46 lines
966 B
Bash
Executable File

#!/usr/bin/env sh
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org>
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
set -u -e
ispwd="true"
[ "$0" = "./mk" ] || ispwd="false"
[ "$ispwd" = "true" ] && [ -L "mk" ] && ispwd="false"
if [ "$ispwd" = "false" ]; then
printf "You must run this in the proper work directory.\n" 1>&2
exit 1
fi
. "include/lib.sh"
. "include/init.sh"
. "include/vendor.sh"
. "include/inject.sh"
. "include/mrc.sh"
. "include/rom.sh"
. "include/release.sh"
. "include/get.sh"
main()
{
cmd="" && [ $# -gt 0 ] && cmd="$1" && shift 1
case "$cmd" in
version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;;
release|download|inject) $cmd "$@" ;;
-*) return 1 ;;
*) err "bad command" ;;
esac
set -u -e # some commands disable them. turn them on!
}
main "$@" && exit 0
. "include/tree.sh"
trees "$@" || exit 0
x_ touch "$mkhelpercfg"
. "$mkhelpercfg"
$cmd