diff --git a/package/system/apk/Makefile b/package/system/apk/Makefile index 1ddc9635adf..f760ce1ec4a 100644 --- a/package/system/apk/Makefile +++ b/package/system/apk/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=apk -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git PKG_SOURCE_PROTO:=git diff --git a/package/system/apk/patches/0020-pkg-truncate-apkv3-description-to-256-bytes.patch b/package/system/apk/patches/0020-pkg-truncate-apkv3-description-to-256-bytes.patch new file mode 100644 index 00000000000..62cdd9d0c9d --- /dev/null +++ b/package/system/apk/patches/0020-pkg-truncate-apkv3-description-to-256-bytes.patch @@ -0,0 +1,45 @@ +From 417a93ceae540444fdbd3f76d1dadf0e15621fdc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Wed, 13 Nov 2024 09:40:21 +0200 +Subject: [PATCH] pkg: truncate apkv3 description to 256 bytes + +The code to read/write installeddb does not really handle long +description well. Until the database is converted to apkv3 format, +truncate the apkv3 descriptions to allow existing code to work. + +APKv3 index and packages still contain the original long description +unmodified, so no package rebuild will be needed. + +fixes #11038 + +Upstream-Status: Backport [https://gitlab.alpinelinux.org/alpine/apk-tools/-/commit/417a93ceae540444fdbd3f76d1dadf0e15621fdc] +--- + src/apk_blob.h | 5 +++++ + src/package.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +--- a/src/apk_blob.h ++++ b/src/apk_blob.h +@@ -48,6 +48,11 @@ static inline apk_blob_t apk_blob_trim(a + return b; + } + ++static inline apk_blob_t apk_blob_truncate(apk_blob_t blob, int maxlen) ++{ ++ return APK_BLOB_PTR_LEN(blob.ptr, min(blob.len, maxlen)); ++} ++ + char *apk_blob_cstr(apk_blob_t str); + apk_blob_t apk_blob_dup(apk_blob_t blob); + int apk_blob_split(apk_blob_t blob, apk_blob_t split, apk_blob_t *l, apk_blob_t *r); +--- a/src/package.c ++++ b/src/package.c +@@ -577,7 +577,7 @@ void apk_pkgtmpl_from_adb(struct apk_dat + + pkg->name = apk_db_get_name(db, adb_ro_blob(pkginfo, ADBI_PI_NAME)); + pkg->version = apk_atomize_dup(&db->atoms, adb_ro_blob(pkginfo, ADBI_PI_VERSION)); +- pkg->description = apk_atomize_dup0(&db->atoms, adb_ro_blob(pkginfo, ADBI_PI_DESCRIPTION)); ++ pkg->description = apk_atomize_dup0(&db->atoms, apk_blob_truncate(adb_ro_blob(pkginfo, ADBI_PI_DESCRIPTION), 512)); + pkg->url = apk_atomize_dup(&db->atoms, adb_ro_blob(pkginfo, ADBI_PI_URL)); + pkg->license = apk_atomize_dup(&db->atoms, adb_ro_blob(pkginfo, ADBI_PI_LICENSE)); + pkg->arch = apk_atomize_dup(&db->atoms, adb_ro_blob(pkginfo, ADBI_PI_ARCH));