[pacman-dev] [PATCH] makepkg: Fix integrity check when files are missing.
Dan McGee
dpmcgee at gmail.com
Sat Apr 11 14:08:15 EDT 2009
On Mon, Apr 6, 2009 at 11:15 PM, Loui Chang <louipc.ist at gmail.com> wrote:
> The index in the for loop wasn't being incremented, so
> if the first file wasn't found, the second file would be compared to the
> first checksum, rather than the second.
>
> Signed-off-by: Loui Chang <louipc.ist at gmail.com>
This seems fine, but what the hell is going on around line 580? Is it
just me that thinks a double check on "$file" is odd?
if [ ! -f "$file" ] ; then
if [ ! -f "$file" ] ; then
echo "$(gettext "NOT FOUND")" >&2
errors=1
found=0
else
file="$SRCDEST/$file"
fi
fi
Originally when this came in it looked like the following (commit 142225fd):
+
+ if [ ! -f "$file" ] ; then
+ if [ ! -f "$SRCDEST/$file" ] ; then
+ error "$(gettext "Unable to
find source file %s to generate checksum.")" "$file"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ else
+ file=$SRCDEST/$file
+ fi
+ fi
+
git-blame is lying to me here and I can't find when this was changed.
Anyone else know what the heck happened here?
> ---
> scripts/makepkg.sh.in | 19 +++++++++++--------
> 1 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 349d0e0..9ff70f6 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -573,6 +573,7 @@ check_checksums() {
> local idx=0
> local file
> for file in "${source[@]}"; do
> + local found=1
> file="$(get_filename "$file")"
> echo -n " $file ... " >&2
>
> @@ -580,19 +581,21 @@ check_checksums() {
> if [ ! -f "$file" ] ; then
> echo "$(gettext "NOT FOUND")" >&2
> errors=1
> - continue
> + found=0
> else
> file="$SRCDEST/$file"
> fi
> fi
>
> - local expectedsum="$(echo ${integrity_sums[$idx]} | tr '[A-F]' '[a-f]')"
> - local realsum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')"
> - if [ "$expectedsum" = "$realsum" ]; then
> - echo "$(gettext "Passed")" >&2
> - else
> - echo "$(gettext "FAILED")" >&2
> - errors=1
> + if [ $found -gt 0 ] ; then
> + local expectedsum="$(echo ${integrity_sums[$idx]} | tr '[A-F]' '[a-f]')"
> + local realsum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')"
> + if [ "$expectedsum" = "$realsum" ]; then
> + echo "$(gettext "Passed")" >&2
> + else
> + echo "$(gettext "FAILED")" >&2
> + errors=1
> + fi
> fi
>
> idx=$((idx + 1))
> --
> 1.6.2.2
>
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://www.archlinux.org/mailman/listinfo/pacman-dev
>
More information about the pacman-dev
mailing list