diff options
author | Timo Teräs <timo.teras@iki.fi> | 2022-01-17 11:03:14 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2022-01-17 11:03:14 +0200 |
commit | a6126a6f2362ee47e91acb25083e1b112a57640a (patch) | |
tree | a35ba6d96710961eb394cb1e57c951a82c25b737 /src/database.c | |
parent | faba66ba96af2787563a1dabec67c484ef03aab2 (diff) | |
download | apk-tools-a6126a6f2362ee47e91acb25083e1b112a57640a.tar.gz apk-tools-a6126a6f2362ee47e91acb25083e1b112a57640a.tar.bz2 apk-tools-a6126a6f2362ee47e91acb25083e1b112a57640a.tar.xz apk-tools-a6126a6f2362ee47e91acb25083e1b112a57640a.zip |
package: fail on invalid control data
Handle meta data error to produce hard failure.
fixes #10806
Diffstat (limited to 'src/database.c')
-rw-r--r-- | src/database.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/database.c b/src/database.c index b8aa643..888033f 100644 --- a/src/database.c +++ b/src/database.c @@ -2455,8 +2455,10 @@ static int apk_db_install_archive_entry(void *_ctx, if (ae->name[0] != '.') return 0; if (strcmp(ae->name, ".PKGINFO") == 0) { apk_blob_t l, token = APK_BLOB_STR("\n"); - while (!APK_BLOB_IS_NULL(l = apk_istream_get_delim(is, token))) - read_info_line(ctx, l); + while (!APK_BLOB_IS_NULL(l = apk_istream_get_delim(is, token))) { + r = read_info_line(ctx, l); + if (r < 0) return r; + } return 0; } r = apk_script_type(&ae->name[1]); |