scripts: signall: fix finish function not called when apk adbsign failed v19
authorPetr Štetiar <ynezz@true.cz>
Sun, 29 Sep 2024 18:21:02 +0000 (18:21 +0000)
committerPetr Štetiar <ynezz@true.cz>
Sun, 29 Sep 2024 18:21:02 +0000 (18:21 +0000)
The `finish 3` was not being called when the `apk adbsign` command
failed within the `find` command using `-exec`. This happened because
`find` does not exit with a non-zero status when the command executed by
`-exec` fails, so the `|| finish 3` condition was not triggered.

So lets replace the `find ... -exec ...` construct with a loop and call
`finish 3` immediately if it fails.

Fixes: a94d4e15fdc1 ("add APK signing logic")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
scripts/signall.sh

index 4c7ef49752e5305e7f1036061f28237006f14729..7b22386ec7606b952b8f5548b5efc9bc7bbbefd0 100755 (executable)
@@ -76,8 +76,11 @@ if [ -n "$APKSIGNKEY" ]; then
        echo "$APKSIGNKEY" > "$tmpdir/apk.pem"
 
        umask 022
-       find "$tmpdir/tar/" -type f -name "packages.adb" -exec \
-               "${APK_BIN:-apk}" adbsign --allow-untrusted --sign-key "$(readlink -f "$tmpdir/apk.pem")" "{}" \; || finish 3
+       find "$tmpdir/tar/" -type f -name "packages.adb" -print0 | while IFS= read -r -d '' file; do
+               if ! "${APK_BIN:-apk}" adbsign --allow-untrusted --sign-key "$(readlink -f "$tmpdir/apk.pem")" "$file"; then
+                       finish 3
+               fi
+       done
 
        find "$tmpdir/tar/" -type f -name sha256sums | while read -r file; do
                dir=$(dirname "$file")