RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð �PNG  ��� IHDR���0���0����`n���� cHRM��z&��������������u0���`��:���p��Q<���bKGD�������������tIME� 6���� AIDATX��]pU����{��{�G�n$$@ -�-jВAک��P��1O���j��:cU|hg�}�C�ʋU�:�A A�����|$$$������}�^}8i *�د�?w�9gݵ��:{��F"��&��4� �@��@q_����Ow��9<<|�ԩ�;w���"�#GV�^}Ճ7�|s˖-{��|��G�-[��R�Q�aőTR)� �2!�e�63��X�U������{��Z�m۶�^}�5����}����v�퟇R��J�J,�$� B�$Ф")�i��D�9+䜆B.�qf�үÇoذaժU�i>��so����a^���۷����3�<�ꫯnݺ��"���\���gn0�h��B�i� hR��,W*�e�65��LS�ر�0ēO>���755���ι@O?��ҥK������:::����1��X�9S�%�'�I���$��Sg�ڥ3'zF/� ��Z�8ES6WZ#�. �\��P�R�2����-[�,_�|�`�j�Xl6M���b�Z�* �jҟ0��҉B""� y22r�ܹ�CG�;���{7nn��ma���������2S���� <��x�⡡�|p.Pw��x��y�C�=��O� ��CB}�ӵ����?�wq`8�e����{+Չɱ�\{&� LL������vww��]��?q��Y�������P(���vuu9���S?w���ݻ�v<���mш ��D�DR&�j�X�����y񪂬�>���dyg�7��b��s�p��E���BDR� t����������=w�\�[;:[&._�Dlڸv�]�� u�驚�/Y�a�����d�%��*)1� �V\G���[F]����X���i����J:z�N�9�?xϭ+X�V|���U�n� �g���hҜ�b�aҢ ^��j�f�ZV�K��w.�ؾp�}{� �/e��{O�o�����R�8���i� !jB`�3n;Mw.=7�S�'��F�y W��x�}LXNfz���� �b�p�b�bq~�����s�4�H�2��q^�r�� n���\aFf4�����n�c��Q�n�X�,����ӑҤd5DDDd 9'd��,�l��.���)?��������#}C�k����ܖq����m�a��y��8D���,K)�I�$I�8NE�aH)�|�VCDƘ��DF0D@M �"3�+�����Kcú��+n}��-�k:W�K������3ƄRʌ��m۞��q�9WJ���d�0�, �8��ٶ�⦈B�h���䩡�eDCj&$ �1�Y��\�>{~`�M����ͷt�#?VZ'@D²l"�,+�ɤc0�r��R*��X��n�_kMD�1"""ι�:%X��� $�b:i�b4 �X<�/"r�����[Vo��T��0V�i���sΓ$IG���4M�c �R�eq��QS�+5{�{�,��a"� �D�2�CҐ(I`CS�s�ʥ�R&�p�����۴(�N���e�sq�Ғ|%�����k�=�0S3@�`�i9�K��Պ�0T�Y��ؼD*��DE��2�gO�bŷrY����z�T��R�҉҆SX�Tϑ����/�Zi�eL��X��jdx䏿�eَ ���7��П"?�����0y����<��R�N8�\X9ӥx ��^�L�l�ކ��u����/���Q�B�^p�f��\3��]�INƑ�L�"--�r�! 8?���Rp~����v��|�M��$����_M �����GgF�/U�^�^p�Dk�ٲ�vM� ����L$�eGʓ01*���Two��f��#���ޱ��7��!5rdy"D��V���\ט�� [y�f ���@���Um����2w\�fg_򯯃z�y���v|`$_ow402�|���c��Zt��J��Yw��݌�b8+L����R�t߉O�xS���'�L��`/lY�� ���Z;f�nX���f��$�<���Ϩ�J��z"�y��%�qzz��(B��Y�@D�)�uS���<�\.[�����*T(�8v�̗����rrr2I�� N5w����^k=�}�:�S�yӌ��ً+�����NY碧f����0)��h. �R����4�Ա�>�X,:����c�0�0 �Rn6���mii�MW*�j��i�I�0�,ˊ��� È�8���j�$I �hkk �`||�B!b��l6�8Ncc��U��<���1f�&"FQdYV�B�b���j3�>� !��j>���g���g��RD����8���r�08�׵u�7��]3������~�,b�P���%tEXtdate:create�2025-02-07T10:02:54+00:00� t����%tEXtdate:modify�2025-02-07T10:02:54+00:00�P�6���(tEXtdate:timestamp�2025-02-07T10:02:54+00:00�E������IEND�B`� 403WebShell
403Webshell
Server IP : 128.227.220.250  /  Your IP : 216.73.216.35
Web Server : Apache/2.4.64 (Unix) OpenSSL/1.0.2k-fips PHP/7.4.33
System : Linux dumont.ece.ufl.edu 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64
User : daemon ( 2)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/libexec/microcode_ctl/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/libexec/microcode_ctl/update_ucode
#! /bin/bash -eu

# Maintain kernel-version-specific symlinks in /lib/firmware based on
# configuration present in /usr/share/microcode_ctl/ucode_with_caveats.
#
# SPDX-License-Identifier: CC0-1.0

export LC_ALL=C

usage()
{
	echo "Usage: update_ucode [--action {add|remove|refresh|list}]" \
	     "[--kernel KERNELVER]* [--verbose] [--dry-run]" \
	     "[--cleanup intel_ucode caveats_ucode]" \
	     "[--skip-common] [--skip-kernel-specific]" >&2
}

debug() { [ 0 = "$verbose" ] || echo "$*" >&2; }

# Calls find only if the first argument exists and is a directory.
# Avoids spurious "find: '...' No such file or directory" for the directories
# that may not exist.
find_d() { [ \! -d "$1" ] || find "$@"; }

MC_DIR=/usr/share/microcode_ctl
INTEL_UCODE_DIR=intel-ucode
DATA_DIR=/usr/share/microcode_ctl/ucode_with_caveats
FW_DIR=/lib/firmware
check_caveats=/usr/libexec/microcode_ctl/check_caveats

action=refresh
kernel=
verbose=0
verbose_opt=
dry_run=0
remove_cleanup=0
cleanup_intel=
cleanup_caveats=
skip_common=0
skip_caveats=0

while [ 1 -le "$#" ]; do
	case "$1" in
	-C|--skip-common)
		skip_common=1
		;;
	-K|--skip-kernel-specific)
		skip_caveats=1
		;;
	-a|--action)
		shift
		action="$1"
		;;
	-k|--kernel)
		shift
		kernel="$kernel $1"
		;;
	-v|--verbose)
		verbose=1
		verbose_opt="-v"
		;;
	-n|--dry-run)
		dry_run=1
		;;
	-c|--cleanup)
		remove_cleanup=1
		shift
		cleanup_intel="$1"
		shift
		cleanup_caveats="$1"
		;;
	*)
		echo "Unknown argument \"$1\"" >&2
		usage
		exit 1
	esac
	shift
done

cmd=
[ 0 -eq "$dry_run" ] || cmd=echo

case "$action" in
add|remove|refresh|list)
	# Scan all directories in FW_DIR and all existing kernels
	if [ -z "$kernel" ]; then
		debug "No kernel versions provided, scanning..."

		kvers=$(find_d /lib/modules/ -name '[2-9].*' -print)
		for k_dir in $kvers; do
			k="${k_dir#/lib/modules/}"
			[ ! -e "/boot/symvers-$k.gz" ] || {
				debug "  Adding $k (from /lib/modules)"
				kernel="$kernel $k"
			}
		done

		kvers=$(find_d /lib/firmware/ -name '[2-9].*' -print)
		for k_dir in $kvers; do
			k="${k_dir#/lib/firmware/}"
			[ ! -d "$k_dir" ] || {
				debug "  Adding $k (from /lib/firmware)"
				kernel="$kernel $k"
			}
		done

		kernel=$(printf "%s" "$kernel" | xargs -n 1 | sort -u)
	fi
	;;
*)
	echo "Unknown action \"$action\"" >&2
	usage
	exit 1
	;;
esac

# Generic part: managing intel ucode
debug "Running action \"$action\" on common Intel microcode directory"
while :; do
	[ 0 -eq "$skip_common" ] || break

	[ ! -e "/etc/microcode_ctl/intel-ucode-disallow" ] || {
		debug "  Skipping \"$i\":" \
		      "\"/etc/microcode_ctl/intel-ucode-disallow\"" \
		      "present"
		break
	}
	[ ! -e "$FW_DIR/intel-ucode-disallow" ] || {
		debug "  Found \"$FW_DIR/intel-ucode-disallow\"," \
		      "skipping"
		break
	}

	# Removing old files
	case "$action" in
	refresh|remove|list)
		debug "  Removing old files from ${FW_DIR}/${INTEL_UCODE_DIR}"
		if [ 0 = "$remove_cleanup" ]; then
			find_d "${MC_DIR}/${INTEL_UCODE_DIR}" \
				-maxdepth 1 -mindepth 1 \
				-type f -printf '%f\n'
		else
			cat "$cleanup_intel"
		fi | while read -r fname; do
			name="${FW_DIR}/${INTEL_UCODE_DIR}/${fname}"

			# Needed in case we downgrade to a version where
			# no symlinks in /lib/firmware were used
			if [ 1 = "$remove_cleanup" ]; then
				[ -L "$name" ] || continue
			fi

			[ "xlist" != "x$action" ] || {
				echo "$name"
				continue
			}

			$cmd rm -f $verbose_opt "$name"
		done
		[ "xlist" = "x$action" ] || {
			# Removing possible dangling symlinks
			find_d "${FW_DIR}/${INTEL_UCODE_DIR}" \
				-maxdepth 1 -mindepth 1 \
				-type l -printf '%p\n' \
			| while read -r fname; do
				[ -e "$fname" ] || {
					debug "    Removing danging symlink \"$fname\""
					$cmd rm -f $verbose_opt "$fname"
				}
			done

			$cmd rmdir -p $verbose_opt \
				"${FW_DIR}/${INTEL_UCODE_DIR}" 2>/dev/null \
				|| true
		}
		;;
	esac

	# Adding new ones
	case "$action" in
	add|refresh)
		debug "  Creating symlinks in ${FW_DIR}/${INTEL_UCODE_DIR}"
		$cmd mkdir -p $verbose_opt "${FW_DIR}/${INTEL_UCODE_DIR}"
		$cmd find "${MC_DIR}/${INTEL_UCODE_DIR}" -maxdepth 1 -mindepth 1 \
			-type f -exec bash -c 'ln -fs '"$verbose_opt"' '\''{}'\'' \
				"'"${FW_DIR}/${INTEL_UCODE_DIR}/"'$(basename '\''{}'\'')"' \;
		;;
	esac

	break
done

debug "Running action \"$action\" on kernels $kernel"

if [ 0 = "$remove_cleanup" ]; then
	ls "$DATA_DIR"
else
	cat "$cleanup_caveats"
fi | while read -r i; do
	[ 0 -eq "$skip_caveats" ] || break

	debug "Processing data directory \"$i\"..."

	for k in $(echo "$kernel"); do
		debug "    Processing kernel version \"$k\""
		{
			out=$($check_caveats -k "$k" -c "$i" $verbose_opt)
			ret="$?"
		} || :
		paths=$(printf "%s" "$out" | sed -n 's/^paths //p')
		ignore=$(printf "%s" "$out" | sed -n 's/^skip_cfgs //p')

		[ -z "$ignore" ] || {
			debug "      Configuration is ignored, skipping"
			continue
		}

		case "$action" in
		remove|refresh|list)
			[ "xlist" = "x$action" ] || \
				debug "    Removing \"$paths\" (part of $action)..."

			for p in $(printf "%s" "$paths"); do
				find_d "$DATA_DIR/$i" -path "$DATA_DIR/$i/$p" \
					-printf "%P\n"
			done | while read -r path; do
				[ -e "$FW_DIR/$k/readme-$i" ] || {
					debug "      \"$FW_DIR/$k/readme-$i\"" \
					      "is not found, skipping" \
					      "\"$paths\" removal"

					break
				}

				if [ "xlist" = "x$action" ]; then
					echo "$FW_DIR/$k/$path"
				else
					debug "      Removing \"$FW_DIR/$k/$path\""
					$cmd rm -f $verbose_opt "$FW_DIR/$k/$path"
					$cmd rmdir -p $verbose_opt \
						"$FW_DIR/$k/$(dirname $path)" 2>/dev/null \
						|| true
				fi
			done


			if [ -e "$FW_DIR/$k/readme-$i" ]; then
				if [ "xlist" = "x$action" ]; then
					echo "$FW_DIR/$k/readme-$i"
				else
					$cmd rm -f $verbose_opt \
						"$FW_DIR/$k/readme-$i"
					$cmd rmdir -p $verbose_opt \
						"$FW_DIR/$k" 2>/dev/null || true
				fi
			fi
			;;
		esac

		[ 0 -eq "$ret" ] || {
			debug "    Checking for caveats failed" \
			      "(kernel version \"$k\"), skipping"
			continue
		}

		[ -n "$paths" ] || {
			debug "    List of paths to add is empty, skipping"
			continue
		}

		case "$action" in
		add|refresh)
			debug "    Adding $paths (part of $action)..."

			[ -e "/boot/symvers-$k.gz" ] || {
				debug "      \"/boot/symvers-$k.gz\"" \
				      "does not exist, skipping"
				continue
			}

			for p in $(printf "%s" "$paths"); do
				find_d "$DATA_DIR/$i" -path "$DATA_DIR/$i/$p" \
					-printf "%P\n"
			done | while read -r path; do
				[ ! -e "$FW_DIR/$k/$path" ] || {
					debug "      $FW_DIR/$k/$path already" \
					      "exists, skipping"
					continue
				}

				debug "      Adding \"$FW_DIR/$k/$path\""
				$cmd mkdir -p $verbose_opt \
					"$(dirname "$FW_DIR/$k/$path")"
				$cmd ln -fs $verbose_opt "$DATA_DIR/$i/$path" \
					"$FW_DIR/$k/$path"
			done

			if [ -e "$FW_DIR/$k/readme-$i" ]; then
				debug "        $FW_DIR/$k/readme-$i already" \
				      "exists, skipping creation"
			else
				$cmd cp $verbose_opt "$DATA_DIR/$i/readme" \
					"$FW_DIR/$k/readme-$i"
			fi
			;;
		remove)
		esac
	done
done

# Removing possible dangling symlinks in kernel-specific directories
debug "Checking for dangling symlinks..."
for k in $(echo "$kernel"); do
	debug "  Processing kernel version \"$k\""
	find_d "${FW_DIR}/${k}" \
		-mindepth 1 -type l -printf '%p\n' \
	| while read -r fname; do
		[ -e "$fname" ] || {
			debug "    Removing danging symlink \"$fname\""
			$cmd rm -f $verbose_opt "$fname"
		}
	done
done

Youez - 2016 - github.com/yon3zu
LinuXploit