This file is indexed.

/usr/bin/lsinitramfs is in initramfs-tools 0.120+deb8u3.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/sh

set -eu

usage()
{
	echo "Usage: $(basename $0) [-l] <initramfs file>"
}

if [ "$#" -eq 0 ] ; then
	usage >&2
	exit 1
fi

cpio_args="--extract --quiet --list"

OPTIONS=`getopt -o hl --long help,long -n "$0" -- "$@"`
# Check for non-GNU getopt
if [ $? != 0 ] ; then echo "W: non-GNU getopt" >&2 ; exit 1 ; fi

eval set -- "$OPTIONS"

while true; do
        case "$1" in
        -h|--help)
		usage
		exit 0
	;;
	-l|--long)
		cpio_args="${cpio_args:+${cpio_args} --verbose}"
		shift
	;;
	--)
		shift
		break
	;;
	*)
		echo "Internal error!" >&2
		exit 1
	esac
done

listarchive()
{
	archive="$1"
	if zcat -t "${archive}" >/dev/null 2>&1 ; then
		zcat "${archive}" | cpio ${cpio_args}
	elif xzcat -t "${archive}" >/dev/null 2>&1 ; then
		xzcat "${archive}" | cpio ${cpio_args}
	elif bzip2 -t "${archive}" >/dev/null 2>&1 ; then
		bzip2 -c -d "${archive}" | cpio ${cpio_args}
	elif lzop -t "${archive}" >/dev/null 2>&1 ; then
		lzop -c -d "${archive}" | cpio ${cpio_args}
	fi
}

# Read bytes out of a file, checking that they are valid hex digits
readhex()
{
	dd < "$1" bs=1 skip="$2" count="$3" 2> /dev/null | \
		LANG=C grep -E "^[0-9A-Fa-f]{$3}\$"
}

# Check for a zero byte in a file
checkzero()
{
	dd < "$1" bs=1 skip="$2" count=1 2> /dev/null | \
		LANG=C grep -q -z '^$'
}

for initramfs in "$@" ; do
	if ! [ -r "${initramfs}" ] ; then
		echo "Specified file could not be read." >&2
		exit 1
	else
		echo "${initramfs}"

		# There may be a prepended uncompressed archive.  cpio
		# won't tell us the true size of this so we have to
		# parse the headers and padding ourselves.  This is
		# very roughly based on linux/lib/earlycpio.c
		offset=0
		while true; do
			if checkzero "$initramfs" $offset; then
				offset=$((offset + 4))
				continue
			fi
			magic="$(readhex "$initramfs" $offset 6)" || break
			test $magic = 070701 || test $magic = 070702 || break
			namesize=0x$(readhex "$initramfs" $((offset + 94)) 8)
			filesize=0x$(readhex "$initramfs" $((offset + 54)) 8)
			offset=$(((offset + 110)))
			offset=$(((offset + $namesize + 3) & ~3))
			offset=$(((offset + $filesize + 3) & ~3))
		done

		if [ $offset -ne 0 ]; then
			# List uncompressed archive
			cpio ${cpio_args} < "$initramfs"

			# List main archive
			subarchive=$(mktemp ${TMPDIR:-/var/tmp}/lsinitramfs_XXXXXX)
			trap "rm -f $subarchive" EXIT
			dd < "$initramfs" bs="$offset" skip=1 2> /dev/null \
				> $subarchive
			listarchive $subarchive
		else
			listarchive "${initramfs}"
		fi

	fi
done