diff options
author | ramon <ramongomez@us.es> | 2014-03-17 11:36:29 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2014-03-17 11:36:29 +0000 |
commit | a73649da0a35ef4e4947a939d8bf2491c6bcaff2 (patch) | |
tree | bbf2002e957ffbf461cec9e93619d379f560f970 | |
parent | 0483b14f234edbefa932d73b6ca2c3d9b3283449 (diff) |
#637: Corregidas las condiciones de error incorrectas que no provocaban la salida de una función ante un fallo controlado.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4187 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/Boot.lib | 41 | ||||
-rwxr-xr-x | client/engine/Disk.lib | 6 | ||||
-rwxr-xr-x | client/engine/Image.lib | 33 | ||||
-rwxr-xr-x | client/engine/Registry.lib | 4 |
4 files changed, 42 insertions, 42 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib index 51c78bc2..bc176b85 100755 --- a/client/engine/Boot.lib +++ b/client/engine/Boot.lib @@ -48,7 +48,8 @@ fi PART=$(ogDiskToDev $1 $2) || return $? TYPE=$(ogGetFsType $1 $2) || return $? MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +# Error si no puede montar sistema de archivos. +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? case "$TYPE" in EXT[234]|REISERFS|REISER4|JFS|XFS) @@ -56,7 +57,7 @@ case "$TYPE" in PARAMS=$(ogLinuxBootParameters $1 $2) || return $? read -e KERNEL INITRD APPEND <<<"$PARAMS" # Si no hay kernel, no hay sistema operativo. - [ -z "$KERNEL" ] && ogRaiseError $OG_ERR_NOTOS && return $? + [ -n "$KERNEL" ] || ogRaiseError $OG_ERR_NOTOS || return $? # Arrancar de partición distinta a la original. [ -e "$MNTDIR/etc" ] && APPEND=$(echo $APPEND | awk -v P="$PART " '{sub (/root=[-+=_/a-zA-Z0-9]* /,"root="P);print}') # Configurar kernel Linux con los parámetros leídos de su GRUB. @@ -69,7 +70,7 @@ case "$TYPE" in FILE="$(ogGetPath $1 $2 $f 2>/dev/null)" [ -n "$FILE" ] && LOADER="$f" done - [ -z "$LOADER" ] && ogRaiseError $OG_ERR_NOTOS && return $? + [ -n "$LOADER" ] || ogRaiseError $OG_ERR_NOTOS || return $? if [ "$winboot" == "kexec" ]; then # Modo de arranque en caliente (con kexec). cp $OGLIB/grub4dos/* $MNTDIR # */ (Comentario Doxygen) @@ -128,7 +129,7 @@ fi # Montar el sistema de archivos. MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? # Obtener dato del valor de registro. ogGetRegistryValue $MNTDIR system '\ControlSet001\Control\ComputerName\ComputerName\ComputerName' @@ -171,7 +172,7 @@ fi # Detectar id. de tipo de partición y codificar al mnemonico. MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? # Fichero de configuración de GRUB. CONFDIR=$MNTDIR # Partición de arranque /boot. @@ -180,7 +181,7 @@ CONFFILE="$CONFDIR/grubPARTITION/boot/grub/grub.cfg" [ ! -e $CONFFILE ] && CONFFILE="$CONFDIR/grub/menu.lst" [ ! -e $CONFFILE ] && CONFFILE="$CONFDIR/grub/grub.cfg" [ ! -e $CONFFILE ] && CONFFILE="$CONFDIR/grub2/grub.cfg" -[ ! -e $CONFFILE ] && ogRaiseError $OG_ERR_NOTFOUND "grub.cfg" && return $? +[ -e $CONFFILE ] || ogRaiseError $OG_ERR_NOTFOUND "grub.cfg" || return $? # Toma del fichero de configuracion los valores del kernel, initrd # y parámetros de arranque usando las cláusulas por defecto @@ -282,7 +283,7 @@ fi # Montar el sistema de archivos. MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? NAME="$3" # Modificar datos en el registro. @@ -305,20 +306,20 @@ ogSetRegistryValue $MNTDIR SOFTWARE '\Microsoft\Windows NT\CurrentVersion\Winlog function ogBootMbrXP () { # Variables locales. -local PART +local DISK # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk " \ - "$FUNCNAME 1 " + "$FUNCNAME 1" return fi -# Error si no se reciben 1 parámetros. +# Error si no se recibe 1 parámetro. [ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $? -PART="$(ogDiskToDev $1)" || return $? -ms-sys -z -f $PART -ms-sys -m -f $PART +DISK="$(ogDiskToDev $1)" || return $? +ms-sys -z -f $DISK +ms-sys -m -f $DISK } @@ -337,7 +338,7 @@ ms-sys -m -f $PART function ogBootMbrGeneric () { # Variables locales. -local PART +local DISK # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -345,12 +346,12 @@ if [ "$*" == "help" ]; then "$FUNCNAME 1 " return fi -# Error si no se reciben 1 parámetros. +# Error si no se recibe 1 parámetro. [ $# == 1 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) -PART="$(ogDiskToDev $1)" || return $(ogRaiseError $OG_ERR_NOTFOUND; echo $?) -ms-sys -z -f $PART -ms-sys -s -f $PART +DISK="$(ogDiskToDev $1)" || return $? +ms-sys -z -f $DISK +ms-sys -s -f $DISK } @@ -908,7 +909,7 @@ esac # Montar el sistema de archivos. MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? ETC=$(ogGetPath $1 $2 /etc) @@ -965,7 +966,7 @@ fi # Montar el sistema de archivos. MNTDIR=$(ogMount $1 $2) 2>/dev/null -[ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? # Eliminar fichero de configuración de udev para dispositivos fijos de red. rm -f ${MNTDIR}/etc/udev/rules.d/70-persistent-net.rules diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib index 6f695c2a..293aac3f 100755 --- a/client/engine/Disk.lib +++ b/client/engine/Disk.lib @@ -51,7 +51,7 @@ if [ "$*" == "help" ]; then "$FUNCNAME 1 NTFS:10000000 EXT3:5000000 LINUX-SWAP:1000000" return fi -# Error si no se reciben menos de 2 parámetros. +# Error si no se reciben al menos 2 parámetros. [ $# -ge 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Nº total de sectores, para evitar desbordamiento (evitar redondeo). @@ -101,13 +101,13 @@ while [ $# -gt 0 ]; do SIZE=$[SIZE*2] # Comprobar si la partición es extendida. if [ $ID = 5 ]; then - [ $PART -gt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? + [ $PART -gt 4 ] && return (ogRaiseError $OG_ERR_FORMAT; echo $?) EXTSTART=$START EXTSIZE=$SIZE fi # Incluir particiones lógicas dentro de la partición extendida. if [ $PART = 5 ]; then - [ -z "$EXTSTART" ] && ogRaiseError $OG_ERR_FORMAT && return $? + [ -z "$EXTSTART" ] && return (ogRaiseError $OG_ERR_FORMAT; echo $?) START=$EXTSTART SECTORS=$[EXTSTART+EXTSIZE] fi diff --git a/client/engine/Image.lib b/client/engine/Image.lib index d749d397..59d17809 100755 --- a/client/engine/Image.lib +++ b/client/engine/Image.lib @@ -39,7 +39,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben al menos los 2 parámetros para obtener el valor default. -[ $# -lt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? PART="$1" @@ -130,7 +130,7 @@ if [ "$*" == "help" ]; then fi # Error si no se reciben al menos 2 parámetros. -[ $# -lt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # controlamos que el parametro 1 (imagen) es tipo file. [ -f $1 ] || ogRaiseError $OG_ERR_NOTFOUND "$1" || return $? @@ -241,7 +241,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 4 parámetros. -[ $# -lt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 4 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Comprobar que no está bloqueada ni la partición, ni la imagen. PART="$(ogDiskToDev $1 $2)" || return $? @@ -249,10 +249,11 @@ if ogIsLocked $1 $2; then ogRaiseError $OG_ERR_LOCKED "$MSG_PARTITION $1, $2" return $? fi + IMGTYPE="img" # Extensión genérica de imágenes. IMGDIR=$(ogGetParentPath "$3" "$4") - [ -n "$IMGDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$3 $(dirname $4)" || return $? + IMGFILE="$IMGDIR/$(basename "$4").$IMGTYPE" if ogIsImageLocked "$IMGFILE"; then ogRaiseError $OG_ERR_LOCKED "$MSG_IMAGE $3, $4" @@ -312,7 +313,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 3 parámetros. -[ $# -lt 3 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? DISK=$(ogDiskToDev "$1") || return $? IMGDIR=$(ogGetParentPath "$2" "$3") @@ -350,7 +351,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 3 parámetros. -[ $# -lt 3 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? DISK=$(ogDiskToDev "$1") || return $? IMGDIR=$(ogGetParentPath "$2" "$3") @@ -420,11 +421,11 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 1 o 2 parámetros. -[ $# -lt 1 -o $# -gt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 1 -o $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Comprobar que existe directorio de imagen IMGDIR=$(ogGetParentPath $@) || return $? # Crear fichero de bloqueo. -touch $IMGDIR/$(basename "${!#}").lock +touch $IMGDIR/$(basename "${!#}").lock 2>/dev/null || ogRaiseError $OG_ERR_NOTWRITE "$*" || return $? } @@ -470,7 +471,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 4 parámetros. -[ $# -lt 4 ] && return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +[ $# == 4 ] || ogRaiseError $OG_ERR_FORMAT || return $?) # Procesar parámetros. PART="$(ogDiskToDev $3 $4)" || return $(ogRaiseError $OG_ERR_NOTFOUND " $3 $4"; echo $?) #IMGTYPE=$(ogGetImageType "$1" "$2") @@ -485,8 +486,6 @@ IMGSIZE=$(ogGetImageSize "$1" "$2") || return $(ogRaiseError $OG_ERR_IMAGE " $1 #TODO: #Si la particion no esta formateado o tiene problemas formateamos ogMount $3 $4 || ogFormat $3 $4 -#PARTSIZE=$(parted -sm $DISK unit kB print | \ -# awk -F: -v np=$4 '{if ($1==np) {gsub(/kB/,""); print $4} } ') PARTSIZE=$(ogGetPartitionSize $3 $4) if [ $IMGSIZE -gt $PARTSIZE ]; then ogRaiseError $OG_ERR_IMGSIZEPARTITION " $PARTSIZE < $IMGSIZE" @@ -503,7 +502,7 @@ if ogIsLocked $3 $4; then fi # Desmontar y bloquear partición. ogUnmount $3 $4 2>/dev/null || return $(ogRaiseError $OG_ERR_PARTITION " $3 $4"; echo $?) -ogLock $3 $4 || return $(ogRaiseError $OG_ERR_PARTITION " $3 $4"; echo $?) +ogLock $3 $4 || return $? trap "ogUnlock $3 $4" 1 2 3 6 9 # Restaurar según el tipo de imagen. @@ -551,7 +550,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 3 parámetros. -[ $# -lt 3 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Procesar parámetros. DISK=$(ogDiskToDev "$3") || return $? IMGFILE=$(ogGetPath "$1" "$2.mbr") || return $? @@ -587,7 +586,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 3 parámetros. -[ $# -lt 3 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Procesar parámetros. DISK=$(ogDiskToDev "$3") || return $? IMGFILE=$(ogGetPath "$1" "$2.mbr") || return $? @@ -620,7 +619,7 @@ if [ "$*" == "help" ]; then return fi # Error si no se reciben 1 o 2 parámetros. -[ $# -lt 1 -o $# -gt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? +[ $# == 1 -o $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Borrar fichero de bloqueo para la imagen. rm -f $(ogGetPath $@.lock) @@ -754,8 +753,8 @@ if [ "$*" == "help" ]; then "$FUNCNAME REPO /aula1/winxp ==> 5642158" return fi -# Error si no se reciben menos de 2 parámetros. -[ $# -lt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Error si el fichero de imagen no es accesible. IMGFILE=$(ogGetPath "$1" "$2.img") || return $? [ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $? diff --git a/client/engine/Registry.lib b/client/engine/Registry.lib index 57e0abe5..d31e1603 100755 --- a/client/engine/Registry.lib +++ b/client/engine/Registry.lib @@ -229,12 +229,12 @@ fi # Error si no se reciben 2 parámetros. [ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? -# Camino del fichero de registro en NT/2000 o XP/Vista/7. +# Camino del fichero de registro en NT/2000 o en XP y posteriores. FILENT=$(ogGetPath "/$1/winnt/system32/config/$2") [ -f "$FILENT" ] && FILE="$FILENT" FILEXP=$(ogGetPath "/$1/windows/system32/config/$2") [ -f "$FILEXP" ] && FILE="$FILEXP" -[ ! -f $FILE ] && ogRaiseError OG_ERR_NOTFOUND "$1,$2" && return $? +[ -f $FILE ] || ogRaiseError OG_ERR_NOTFOUND "$1,$2" || return $? echo "$FILE" } |