Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/platform/cryptohome/bin/mount

Issue 490001: make cryptohome check a magic file to discern between chrome-login and slim-login (Closed)
Patch Set: mount error handlers already assumed common worked Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/platform/cryptohome/lib/common » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 2 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 set -e # exit on failure 6 set -e # exit on failure
7 set -E # share the error handler 7 set -E # share the error handler
8 set -u # require all variables to be defined 8 set -u # require all variables to be defined
9 USERID="" 9 USERID=""
10 PASSWORD="" 10 PASSWORD=""
11 11
12 function error_handler() { 12 function error_handler() {
13 if ! typeset -F cryptohome::log; then 13 if ! typeset -F cryptohome::log; then
14 echo "An error occurred before/in cryptohome." 1>&2 14 echo "An error occurred before/in cryptohome." 1>&2
15 # Assume common is ok. 15 # Assume common is ok.
16 /bin/mount -t tmpfs tmpfs /home/$DEFAULT_USER 16 /bin/mount -t tmpfs tmpfs $DEFAULT_MOUNT_POINT
17 /bin/chown $DEFAULT_USER /home/$DEFAULT_USER 17 /bin/chown $DEFAULT_USER $DEFAULT_MOUNT_POINT
18 exit 1 18 exit 1
19 fi 19 fi
20 20
21 local image="$IMAGE_DIR/${USERID}/image" 21 local image="$IMAGE_DIR/${USERID}/image"
22 cryptohome::log "entering the mount error_handler ($image)" 22 cryptohome::log "entering the mount error_handler ($image)"
23 # We don't want to error out again if close fails 23 # We don't want to error out again if close fails
24 cryptohome::close || $true 24 cryptohome::close || $true
25 # Same goes for detach 25 # Same goes for detach
26 cryptohome::detach || $true 26 cryptohome::detach || $true
27 if [[ -n "$image" ]]; then 27 if [[ -n "$image" ]]; then
28 cryptohome::log "removing the failed image: $image" 28 cryptohome::log "removing the failed image: $image"
29 $rm -f $image 29 $rm -f $image
30 fi 30 fi
31 cryptohome::log "attempting to create a new image..." 31 cryptohome::log "attempting to create a new image..."
32 # Let's try a new image. If that fails, use the exit trap. 32 # Let's try a new image. If that fails, use the exit trap.
33 trap second_chance EXIT 33 trap second_chance EXIT
34 cryptohome::mount_or_create "$USERID" "$PASSWORD" 34 cryptohome::mount_or_create "$USERID" "$PASSWORD"
35 trap - EXIT 35 trap - EXIT
36 cryptohome::log "new image created and mounted successfully" 36 cryptohome::log "new image created and mounted successfully"
37 cryptohome::log "mount completed" 37 cryptohome::log "mount completed"
38 $exit 0 38 $exit 0
39 } 39 }
40 # TODO: move traps into a single call 40 # TODO: move traps into a single call
41 trap error_handler ERR; 41 trap error_handler ERR;
42 42
43 function second_chance() { 43 function second_chance() {
44 cryptohome::log "new image creation failed (again)" 44 cryptohome::log "new image creation failed (again)"
45 cryptohome::log "mounting tmpfs" 45 cryptohome::log "mounting tmpfs"
46 $mount -t tmpfs tmpfs /home/$DEFAULT_USER 46 $mount -t tmpfs tmpfs $DEFAULT_MOUNT_POINT
47 $chown $DEFAULT_USER /home/$DEFAULT_USER 47 $chown $DEFAULT_USER $DEFAULT_MOUNT_POINT
48 cryptohome::log "mount completed" 48 cryptohome::log "mount completed"
49 $exit 0 49 $exit 0
50 } 50 }
51 51
52 function mount_main() { 52 function mount_main() {
53 if ! typeset -p CHROMEOS_USER &>/dev/null ; then 53 if ! typeset -p CHROMEOS_USER &>/dev/null ; then
54 cryptohome::log "CHROMEOS_USER not exported." 54 cryptohome::log "CHROMEOS_USER not exported."
55 cryptohome::log "Assuming we aren't coming via pam_google..." 55 cryptohome::log "Assuming we aren't coming via pam_google..."
56 return 0 56 return 0
57 fi 57 fi
(...skipping 18 matching lines...) Expand all
76 } 76 }
77 77
78 # Invoke main. 78 # Invoke main.
79 if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then 79 if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
80 source "$(dirname "$0")/../lib/chromeos-cryptohome/common" 80 source "$(dirname "$0")/../lib/chromeos-cryptohome/common"
81 utils::declare_commands exit 81 utils::declare_commands exit
82 # Everything is done by default at present. 82 # Everything is done by default at present.
83 mount_main 83 mount_main
84 fi 84 fi
85 85
OLDNEW
« no previous file with comments | « no previous file | src/platform/cryptohome/lib/common » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698