2017-10-13 22:49:50 +02:00
|
|
|
#!/system/bin/sh
|
|
|
|
#
|
|
|
|
# Copyright (C) 2017 The Android Open Source Project
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2017-10-17 02:01:44 +02:00
|
|
|
# Set up or tear down subdirectories of vold-created directories.
|
|
|
|
#
|
|
|
|
# This is kept separate from vold because under the SELinux rules, it has privileges vold doesn't
|
|
|
|
# have. In particular, prepare_dir sets SELinux labels on subdirectories based on file_contexts,
|
|
|
|
# so this script has some relabelling privileges.
|
|
|
|
|
|
|
|
|
2017-10-13 22:49:50 +02:00
|
|
|
set -e
|
2017-10-17 02:01:44 +02:00
|
|
|
action="$1"
|
|
|
|
dirtype="$2"
|
|
|
|
volume_uuid="$3"
|
|
|
|
user_id="$4"
|
|
|
|
path="$5"
|
2017-10-13 22:49:50 +02:00
|
|
|
|
2017-10-17 02:01:44 +02:00
|
|
|
case "$user_id" in
|
|
|
|
*[!0-9]* | '')
|
|
|
|
echo "Invalid user id"
|
|
|
|
exit -1
|
|
|
|
;;
|
2017-10-13 22:49:50 +02:00
|
|
|
esac
|
|
|
|
|
2017-10-17 02:01:44 +02:00
|
|
|
if [ x"$volume_uuid" != x ] ; then
|
2017-10-13 22:49:50 +02:00
|
|
|
echo "Volume must be root volume"
|
|
|
|
exit -1;
|
|
|
|
fi
|
|
|
|
|
2017-10-17 02:01:44 +02:00
|
|
|
case "$dirtype" in
|
2017-10-13 22:49:50 +02:00
|
|
|
misc_de|misc_ce)
|
2017-10-17 02:01:44 +02:00
|
|
|
computed_path="/data/$dirtype/$user_id"
|
|
|
|
if [ x"$computed_path" != x"$path" ] ; then
|
2017-10-13 22:49:50 +02:00
|
|
|
echo "Parameter path didn't match computed path: " $computed_path
|
|
|
|
exit -1;
|
|
|
|
fi
|
2017-10-17 02:01:44 +02:00
|
|
|
case "$action" in
|
|
|
|
prepare)
|
|
|
|
/system/bin/prepare_dir --mode 700 --uid 0 --gid 0 -- "$computed_path"/vold
|
|
|
|
;;
|
|
|
|
destroy)
|
|
|
|
rm -rf "$computed_path"/*
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Unknown action: $action"
|
|
|
|
exit -1
|
|
|
|
;;
|
|
|
|
esac
|
2017-10-13 22:49:50 +02:00
|
|
|
;;
|
|
|
|
*)
|
2017-10-17 02:01:44 +02:00
|
|
|
echo "Unknown type: $dirtype"
|
|
|
|
exit -1
|
2017-10-13 22:49:50 +02:00
|
|
|
;;
|
|
|
|
esac
|