| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |