xref: /aosp_15_r20/external/crosvm/jail/seccomp/policy-inliner.sh (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker#!/bin/bash
2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright (C) 2020 The Android Open Source Project
3*bb4ee6a4SAndroid Build Coastguard Worker#
4*bb4ee6a4SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*bb4ee6a4SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*bb4ee6a4SAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*bb4ee6a4SAndroid Build Coastguard Worker#
8*bb4ee6a4SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*bb4ee6a4SAndroid Build Coastguard Worker#
10*bb4ee6a4SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*bb4ee6a4SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*bb4ee6a4SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*bb4ee6a4SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*bb4ee6a4SAndroid Build Coastguard Worker# limitations under the License.
15*bb4ee6a4SAndroid Build Coastguard Worker
16*bb4ee6a4SAndroid Build Coastguard Workerset -eu
17*bb4ee6a4SAndroid Build Coastguard Worker
18*bb4ee6a4SAndroid Build Coastguard Workercommon_device="$1"
19*bb4ee6a4SAndroid Build Coastguard Workergpu_common="$2"
20*bb4ee6a4SAndroid Build Coastguard Workerserial="$3"
21*bb4ee6a4SAndroid Build Coastguard Workernet="$4"
22*bb4ee6a4SAndroid Build Coastguard Workerblock="$5"
23*bb4ee6a4SAndroid Build Coastguard Workervhost_user="$6"
24*bb4ee6a4SAndroid Build Coastguard Workervhost_vsock="$7"
25*bb4ee6a4SAndroid Build Coastguard Worker# NOTE: We can't require all of the files to exist because aarch64 doesn't have
26*bb4ee6a4SAndroid Build Coastguard Worker# all of them.
27*bb4ee6a4SAndroid Build Coastguard Workerif ! [[ -f $common_device ]] || ! [[ -f $gpu_common ]] || ! [[ -f $serial ]] || ! [[ -f $net ]]; then
28*bb4ee6a4SAndroid Build Coastguard Worker  echo "usage: $0 /path/to/common_device.policy /path/to/gpu_common.policy /path/to/serial.policy/ /path/to/net.policy /path/to/block.policy /path/to/vhost_user.policy <input.policy >output.policy"
29*bb4ee6a4SAndroid Build Coastguard Worker  exit 1
30*bb4ee6a4SAndroid Build Coastguard Workerfi
31*bb4ee6a4SAndroid Build Coastguard Worker
32*bb4ee6a4SAndroid Build Coastguard Workerwhile IFS= read -r line
33*bb4ee6a4SAndroid Build Coastguard Workerdo
34*bb4ee6a4SAndroid Build Coastguard Worker  if echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/common_device.policy" > /dev/null; then
35*bb4ee6a4SAndroid Build Coastguard Worker    cat $common_device
36*bb4ee6a4SAndroid Build Coastguard Worker    continue
37*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/gpu_common.policy" > /dev/null; then
38*bb4ee6a4SAndroid Build Coastguard Worker    cat $gpu_common
39*bb4ee6a4SAndroid Build Coastguard Worker    continue
40*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/serial.policy" > /dev/null; then
41*bb4ee6a4SAndroid Build Coastguard Worker    cat $serial
42*bb4ee6a4SAndroid Build Coastguard Worker    continue
43*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/net.policy" > /dev/null; then
44*bb4ee6a4SAndroid Build Coastguard Worker    cat $net
45*bb4ee6a4SAndroid Build Coastguard Worker    continue
46*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/block.policy" > /dev/null; then
47*bb4ee6a4SAndroid Build Coastguard Worker    cat $block
48*bb4ee6a4SAndroid Build Coastguard Worker    continue
49*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/vhost_user.policy" > /dev/null; then
50*bb4ee6a4SAndroid Build Coastguard Worker    cat $vhost_user
51*bb4ee6a4SAndroid Build Coastguard Worker    continue
52*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include[[:space:]]+/usr/share/policy/crosvm/vhost_vsock.policy" > /dev/null; then
53*bb4ee6a4SAndroid Build Coastguard Worker    cat $vhost_vsock
54*bb4ee6a4SAndroid Build Coastguard Worker    continue
55*bb4ee6a4SAndroid Build Coastguard Worker  elif echo "$line" | egrep "@include" > /dev/null; then
56*bb4ee6a4SAndroid Build Coastguard Worker    echo "ERROR: Unsupported include statement $line" >&2
57*bb4ee6a4SAndroid Build Coastguard Worker    exit 1
58*bb4ee6a4SAndroid Build Coastguard Worker  fi
59*bb4ee6a4SAndroid Build Coastguard Worker  echo $line
60*bb4ee6a4SAndroid Build Coastguard Workerdone
61