[pacman-dev] [PATCH 2/2] repo-add: enforce maximum .sig file size

Dan McGee dpmcgee at gmail.com
Mon Dec 5 11:49:05 EST 2011


On Mon, Dec 5, 2011 at 10:33 AM, Dave Reisner <d at falconindy.com> wrote:
> On Mon, Dec 05, 2011 at 10:09:45AM -0600, Dan McGee wrote:
>> This prevents user error in adding a file generated via `gpg --sign`
>> rather than `--detach-sign`, for example. The same 16KiB limit is used
>> we use in our pacman download code.
>>
>> The section is moved above the checksum generation to avoid presenting
>> info messages to the user if the signature isn't valid.
>>
>> Addresses a shortcoming pointed out in FS#27453.
>>
>> Signed-off-by: Dan McGee <dan at archlinux.org>
>> ---
>>  scripts/repo-add.sh.in |   19 ++++++++++++-------
>>  1 files changed, 12 insertions(+), 7 deletions(-)
>>
>> diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
>> index 5e1d770..1cde913 100644
>> --- a/scripts/repo-add.sh.in
>> +++ b/scripts/repo-add.sh.in
>> @@ -245,7 +245,7 @@ db_write_entry() {
>>       local pkgfile="$1"
>>       local -a _groups _licenses _replaces _depends _conflicts _provides _optdepends
>>       local pkgname pkgver pkgdesc csize size url arch builddate packager \
>> -             md5sum sha256sum pgpsig
>> +             md5sum sha256sum pgpsig pgpsigsize
>>
>>       # read info from the zipped package
>>       local line var val
>> @@ -284,6 +284,17 @@ db_write_entry() {
>>               fi
>>       fi
>>
>> +     # compute base64'd PGP signature
>> +     if [[ -f "$pkgfile.sig" ]]; then
>> +             pgpsigsize=$(@SIZECMD@ "$pkgfile.sig")
>> +             if [[ $pgpsigsize > 16384 ]]; then
>
> This is a lexical comparison -- most sigs are going to fail this check.
> You meant to use an arithmetic context:
>
>  (( pgpsigsize > 16384 ))
Bagh, yeah, we can do this, I'll update the patch. I thought [[ made
'>' work rather than dropping back to '-gt'. Of course, my testing
locally worked, perhaps by chance.

>
> This looks ifne otherwise.
Thanks for the review.

>
>> +                     error "$(gettext "Invalid package signature file '%s'.")" "$pkgfile.sig"
>> +                     return 1
>> +             fi
>> +             msg2 "$(gettext "Adding package signature...")"
>> +             pgpsig=$(openssl base64 -in "$pkgfile.sig" | tr -d '\n')
>> +     fi
>> +
>>       csize=$(@SIZECMD@ "$pkgfile")
>>
>>       # compute checksums
>> @@ -293,12 +304,6 @@ db_write_entry() {
>>       sha256sum="$(openssl dgst -sha256 "$pkgfile")"
>>       sha256sum="${sha256sum##* }"
>>
>> -     # compute base64'd PGP signature
>> -     if [[ -f "$pkgfile.sig" ]]; then
>> -             msg2 "$(gettext "Adding package signature...")"
>> -             pgpsig=$(openssl base64 -in "$pkgfile.sig" | tr -d '\n')
>> -     fi
>> -
>>       # remove an existing entry if it exists, ignore failures
>>       db_remove_entry "$pkgname"
>>
>> --
>> 1.7.8
>>
>>
>
>
>


More information about the pacman-dev mailing list