From abfb85f6b22734c8f78130d5de3f58ba360ae9db Mon Sep 17 00:00:00 2001 From: Hung-Te Lin Date: Wed, 5 Oct 2011 18:42:53 +0800 Subject: [PATCH] make_factory_package: sudo if --diskimg is a block device Usually make_factory_package operates with normal files that does not need root permission - except if output is a block device. This CL tries to grant root permission by sudo if a block device is assigned to --diskimg. BUG=chrome-os-partner:2827 TEST=(as normal user) ./make_factory_acpakge --factory FACTORY \ --release RELEASE --hwid none --diskimg /dev/sde # completed Change-Id: Ie1285e6b6f46f1af286e795a02a83294fce4eeaa Reviewed-on: http://gerrit.chromium.org/gerrit/8789 Tested-by: Hung-Te Lin Reviewed-by: Tammo Spalink Reviewed-by: Hung-Te Lin Commit-Ready: Hung-Te Lin --- make_factory_package.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/make_factory_package.sh b/make_factory_package.sh index 72a2e99e71..6727f41d40 100755 --- a/make_factory_package.sh +++ b/make_factory_package.sh @@ -64,6 +64,7 @@ DEFINE_string config "" \ # Parse command line FLAGS "$@" || exit 1 +ORIGINAL_PARAMS="$@" eval set -- "${FLAGS_ARGV}" on_exit() { @@ -138,6 +139,13 @@ check_parameters() { check_file_param_or_none FLAGS_hwid_updater "in --diskimg mode" check_empty_param FLAGS_complete_script "in --diskimg mode" check_empty_param FLAGS_install_shim "in --diskimg mode" + if [ -b "${FLAGS_diskimg}" -a ! -w "${FLAGS_diskimg}" ] && + [ -z "$MFP_SUDO" -a "$(id -u)" != "0" ]; then + # Restart the command with original parameters with sudo for writing to + # block device that needs root permission. + # MFP_SUDO is a internal flag to prevent unexpected recursion. + MFP_SUDO=TRUE exec sudo "$0" $ORIGINAL_PARAMS + fi else check_file_param_or_none FLAGS_firmware_updater "in mini-omaha mode" check_file_param_or_none FLAGS_hwid_updater "in mini-omaha mode"