From f9dff9b876e99187b565de5175693fb63c912e0d Mon Sep 17 00:00:00 2001 From: bill-auger Date: Wed, 10 Apr 2024 17:36:23 -0400 Subject: netpbm: upgrade to v10.86.41 --- libre/netpbm/PKGBUILD | 184 +++++++++++++-------- .../5357F3B111688D88C1D88119FCF2CB179205AC90.asc | 30 ++++ libre/netpbm/netpbm-CAN-2005-2471.patch | 6 +- libre/netpbm/netpbm-security-code.patch | 168 +++++++------------ libre/netpbm/netpbm-security-scripts.patch | 57 ------- libre/netpbm/nonfree-licenses-docs.patch | 51 ++++++ libre/netpbm/reproducible-man-gzip.patch | 20 +-- libre/netpbm/use-source-date-epoch.patch | 13 -- 8 files changed, 268 insertions(+), 261 deletions(-) create mode 100644 libre/netpbm/keys/pgp/5357F3B111688D88C1D88119FCF2CB179205AC90.asc create mode 100644 libre/netpbm/nonfree-licenses-docs.patch delete mode 100644 libre/netpbm/use-source-date-epoch.patch diff --git a/libre/netpbm/PKGBUILD b/libre/netpbm/PKGBUILD index 69ad75e8c..deb443f15 100644 --- a/libre/netpbm/PKGBUILD +++ b/libre/netpbm/PKGBUILD @@ -1,95 +1,106 @@ +# Maintainer (arch): Caleb Maclennan # Maintainer: Omar Vega Ramos # Contributor: André Silva -# Maintainer (Arch): +# Contributor: bill-auger + + # parabola changes and rationale: # - Added armv7h and i686 support -# - Removed nonfree parts +# - Removed non-free parts + pkgname=netpbm -pkgver=10.73.42 -pkgrel=2 +pkgver=10.86.41 +pkgrel=1 pkgrel+=.parabola1 -pkgdesc="A toolkit for manipulation of graphic images" -pkgdesc+=", without nonfree parts" -arch=('x86_64') -arch+=('i686' 'armv7h') -license=('custom' 'BSD' 'GPL' 'LGPL') +pkgdesc='A toolkit for manipulation of graphic images' +arch=(x86_64) +arch+=(armv7h i686) +#license=(Artistic-1.0 GPL-2.0-only LGPL-2.0.only MIT) # TODO: SPDX +license=('custom' 'custom:BSD3' 'GPL' 'LGPL') url="http://netpbm.sourceforge.net/" -depends=('perl' 'libpng' 'libtiff' 'libxml2') -makedepends=('jbigkit' 'subversion') -options=('!makeflags') +depends=(bash + gcc-libs + glibc + jbigkit + libjpeg-turbo + libpng + libtiff + libxml2 + perl + zlib) +options=(!makeflags) # Get docs with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/ source=(https://downloads.sourceforge.net/project/netpbm/super_stable/$pkgver/netpbm-$pkgver.tgz https://sources.archlinux.org/other/packages/netpbm/netpbm-doc-31Jan2014.tar.xz{,.sig} - netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch - reproducible-man-gzip.patch use-source-date-epoch.patch) -sha256sums=('f1ddaa753d189aa7760a75265b6f7ab96eeedac3e2493ef57227824d058d528c' + netpbm-CAN-2005-2471.patch + netpbm-security-code.patch + netpbm-security-scripts.patch + reproducible-man-gzip.patch) +sha256sums=('045f7796224a801512efb5e7d6150a321674cbfb566128b21abf8d4ba65b4513' '74bcf840ee643c6917330c382484010cb99c004a3fcf05391bebcac63815acb3' 'SKIP' - '991aba7897e0710687369b4e2edfba1397ecd77d62578eac496afbc47b5ca970' - '343a72eb67edb338bc593d823ced770a0fe44c4c1fa4f4ac1934b84da4431579' - '2c397588d9cba2c40dee55c07713d5e77e0e04245db939fdc1962d7de4cf4a33' - '8e3efdb4fcbfdc8e9a5c8e9663c7d6b9ecef3a2379ce38d2acc5669c339f6814' - '68055341833f482c6910a56c2fdfe046978a1a92fd8442a2a9209c82ce3e4d13') + '7348274b72b8285add042d0f45d124c9833206ee3440bd1846cfc792b9b4d5e5' + '698645215d46bcee515d75847fc550ce99c5fcb6fae63dacdba1d773f327c80e' + '5ee27b4187577cbb9e85f6b36c5e5a421e03927f9195f888be7be2b647a5ac9d' + 'b0be94fbfbf247552c5cc3f1cdd93e2d549f59c3d218350ccc1bea44e9bebc9b') validpgpkeys=('5357F3B111688D88C1D88119FCF2CB179205AC90') -remove_program() { + +# parabola mksource over-rides +_N_MKSOURCES=3 # number of upstream sources to be isolated for mksource +mksource=( ${source[*]:0:${_N_MKSOURCES}} ) +mksha256sums=( ${sha256sums[*]:0:${_N_MKSOURCES}} ) +mkvalidpgpkeys=( ${validpgpkeys[*]} ) +mksource+=(nonfree-licenses-docs.patch) +mksha256sums+=(5ee57bba37dca542df9abea1061d8d343a1ba299038f0e01888210acc08d4779) +source=(https://repo.parabola.nu/other/${pkgname}-libre/${pkgname}-${pkgver}-parabola.tar.gz{,.sig} + ${source[*]:${_N_MKSOURCES}}) +sha256sums=(a75a8530140f0d6b59b2902cef23d388192bd278eb391fbc2cee265fef816917 + SKIP + ${sha256sums[*]:${_N_MKSOURCES}}) +validpgpkeys=(3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40) # bill-auger + + +_UNLICENSED_FILES=( converter/ppm/ppmtogif.c + other/pamchannel.c + converter/other/pamtopnm.c + converter/pbm/pbmto4425.c + converter/pbm/pbmtoln03.c + converter/pbm/pbmtolps.c + converter/pbm/pbmtopk.c + converter/pbm/pktopbm.c + converter/ppm/ppmtopjxl.c + converter/pgm/spottopgm.c) + + +mksource() { + remove_program() { file="$1" progname="$(basename ${file} | sed 's/\.c$//')" rm -v "${file}" sed -i "s/${progname}//g" "$(dirname ${file})/Makefile" sed -i "s/${progname}\.1//g" buildtools/manpage.mk -} + } -prepare() { - cd $pkgname-$pkgver - patch -p1 < ../netpbm-CAN-2005-2471.patch - patch -p1 < ../netpbm-security-code.patch - patch -p1 < ../netpbm-security-scripts.patch - patch -p1 < ../reproducible-man-gzip.patch - patch -p1 < ../use-source-date-epoch.patch - # sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' buildtools/makeman - # sed -i 's|@python|@python2|' buildtools/manpage.mk - - cp config.mk.in config.mk - [ "${CARCH}" = 'x86_64' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk - [ "${CARCH}" = 'armv7h' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk - echo "NETPBM_DOCURL = file://${srcdir}/doc" >> config.mk - echo 'TIFFLIB = libtiff.so' >> config.mk - echo 'JPEGLIB = libjpeg.so' >> config.mk - echo 'PNGLIB = libpng.so' >> config.mk - echo 'ZLIB = libz.so' >> config.mk - echo 'JBIGLIB = /usr/lib/libjbig.a' >> config.mk - - sed -i 's|misc|share/netpbm|' common.mk - sed -i 's|/link|/lib|' lib/Makefile - sed -i 's|install.manwebmain install.manweb install.man|install.man|' GNUmakefile + cd $pkgname-$pkgver # Remove the converter/ppm/hpcdtoppm directory: # - hpcdtoppm: as hpcdtoppm is not even redistributable, this hpcdtoppm only - # prints a message to steer users toward downloading "the real hpcdtoppm" - # which is nonfree - # - pcdovtoppm: no license information - rm -rv converter/ppm/hpcdtoppm - sed '/\.\/converter\/ppm\/hpcdtoppm \\/d' -i GNUmakefile + # prints a message to download "the real hpcdtoppm" (non-free) + # - pcdovtoppm: no licensing information + rm -rfv converter/ppm/hpcdtoppm + sed '/\.\/converter\/ppm\/hpcdtoppm\/ \\/d' -i GNUmakefile sed 's/hpcdtoppm//g' -i converter/ppm/Makefile - # Removing programs without license information - remove_program converter/other/pamtopnm.c - remove_program converter/pbm/pbmto4425.c - remove_program converter/pbm/pbmtoln03.c - remove_program converter/pbm/pbmtolps.c - remove_program converter/pbm/pbmtopk.c - remove_program converter/pbm/pktopbm.c - remove_program converter/pgm/spottopgm.c - remove_program converter/ppm/ppmtogif.c - remove_program converter/ppm/ppmtopjxl.c - remove_program other/pamchannel.c + # Remove programs without licensing information + for f in ${_UNLICENSED_FILES[*]} ; do remove_program $f ; done ; # Tests have no license information rm -v -rf test/ + # Remove test from "SUPPORT_SUBDIRS = urt icon buildtools test" awk '{ if ($1 != "SUPPORT_SUBDIRS") { @@ -106,9 +117,44 @@ prepare() { sed -i '/pnmtopnm/d' netpbm.c - #Removing references about nonfree licenses part - sed -i '338,383d' doc/copyright_summary + # Remove references about non-free licensed parts + echo "applying nonfree-licenses-docs.patch" + patch -p0 < ../nonfree-licenses-docs.patch + unset remove_program +} + + +prepare() { + # delete patches which would apply to deleted files + _UNLICENSED_FILES+=(converter/ppm/hpcdtoppm) + local files="($(sed 's|/|\\/|g ; s|\.|\\.|g' <<<${_UNLICENSED_FILES[*]} | tr ' ' '|'))" + local awk_script="( \$1 !~ /^a\/$files/ ) { print \"diff --git \"\$0 }" + awk -i inplace -v INPLACE_SUFFIX=.orig "$awk_script" RS='diff --git ' FS='\n' *.patch + + + # arch patching ## + + cd $pkgname-$pkgver + + patch -p1 < ../netpbm-CAN-2005-2471.patch + patch -p1 < ../netpbm-security-code.patch + patch -p1 < ../netpbm-security-scripts.patch + patch -p1 < ../reproducible-man-gzip.patch + + cp config.mk.in config.mk + [ "${CARCH}" = 'x86_64' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk + [ "${CARCH}" = 'armv7h' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk + echo "NETPBM_DOCURL = file://${srcdir}/doc" >> config.mk + echo 'TIFFLIB = libtiff.so' >> config.mk + echo 'JPEGLIB = libjpeg.so' >> config.mk + echo 'PNGLIB = libpng.so' >> config.mk + echo 'ZLIB = libz.so' >> config.mk + echo 'JBIGLIB = /usr/lib/libjbig.a' >> config.mk + + sed -i 's|misc|share/netpbm|' common.mk + sed -e 's|/sharedlink|/lib|' -e 's|/staticlink|/lib|' -i lib/Makefile + sed -i 's|install.manwebmain install.manweb install.man|install.man|' GNUmakefile } build() { @@ -124,16 +170,16 @@ package() { cd $pkgname-$pkgver make pkgdir="${pkgdir}/usr" PKGMANDIR=share/man install-run install-dev -# Removing dummy man pages - rm "${pkgdir}"/usr/share/man/man{1,3,5}/* - - # make MAKEMAN="${srcdir}/$pkgname-$pkgver/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \ - # -C ../doc -f "${srcdir}/$pkgname-$pkgver/buildtools/manpage.mk" installman - # Replace obsolete utility echo -e '#!/bin/sh\npamditherbw $@ | pamtopnm\n' > "${pkgdir}/usr/bin/pgmtopbm" # Licensing. Note that each program in the package has a separate license. install -D -m644 "${srcdir}/$pkgname-$pkgver/doc/copyright_summary" \ "${pkgdir}/usr/share/licenses/${pkgname}/copyright_summary.txt" + + + ## parabola changes ## + + # Remove symlinks to deleted programs + rm -v "${pkgdir}"/usr/bin/pnmtopnm } diff --git a/libre/netpbm/keys/pgp/5357F3B111688D88C1D88119FCF2CB179205AC90.asc b/libre/netpbm/keys/pgp/5357F3B111688D88C1D88119FCF2CB179205AC90.asc new file mode 100644 index 000000000..6a31d17a7 --- /dev/null +++ b/libre/netpbm/keys/pgp/5357F3B111688D88C1D88119FCF2CB179205AC90.asc @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBE2uPGoBCADRwwKRvWByYVE0603LkklzYjpCtfSQRWASQnozo9ZcUMxNXr8x +zKxzLZKIh6eTCNpizI0e3WNSN/+rDcen9dJiycPKodWTNRjfCgwW5pr92pwXjHIh +uKGwXrGN4iV0J7E9mLroxjKcSSqMZV7BEK3TGWdSW1dh7D09MexUUfSlKKKVmgY3 +CWhMLYolVVrLIczIvkRi4bRDAQi57nqQvgk//NTjmfZnA/XaxM57bXj/gCKvcRE7 +jPruwANyZ5Vjo/IbEm83J/WJx035KfiXFBYGBVLK9KaqD8UCUClJ7N+niIARikP+ +GxFWY4sTRdtW7yDQ8nAhpQxBBWIaaqB+b8B3ABEBAAG0IkVyaWMgQmVsYW5nZXIg +PGVyaWNAYXJjaGxpbnV4Lm9yZz6JAU8EEwECACIFAk2uPGoCGwMGCwkIBwMCBhUI +AgkKCwQWAgMBAh4BAheAACEJEPzyyxeSBayQFiEEU1fzsRFojYjB2IEZ/PLLF5IF +rJCiSggAolQwd1dvgNVlysaYOT6g8CZO1I5eLxdTyKbyw/ww3e9wtkGW0XcgoNxq +ZO9cuuyjPAn6hIn3nug2qPVmBfhbO/PMvS+617e66104JmxBhH4hqU2c4CfRJmt9 +0WRHbt3Zsy/0MSQStS/Lda5IFwunpLjwAIvn2L5IPtfAg6s5O5qyhpapm0w++bTS +1aHjZRZMVdAXm2yVixZ98NQ9S6o7+VrgipYR/oxb1X88yABJXrHF9ca16QQXXDfz +niR0sv/00/PtVgXZ7fr7jeyrTk96F4+DcRTFFwXASChd3jwHZ7TjBhPBB+gNBwmR +BihNCnrGf26+8TNB/hAXDDaxcwjzHLkBDQRNrjxqAQgA0XBT84b+ttT/6R/Lt2q1 +uFSb2+CwVkrjyI1DQVg0ATjUKyjgypvi78X3fWfpPX8InnBdd6d8uBrpzr0Jlzto +7MMp+VaKH1D7hSQPRVn1u00P1Wo7LQigsYgFoMsfR2N/PK6j6EZm9Epsnawz85ic +Y2qsvXokTtz3tsmeZq8bUc5BNq6fl9rawK2ZPRlZ69xjR564nm2qfN48vqknJIsh +g5oEAIl20MdbXECju8LYh1PfsB6XPQNMpTRrasJnDhB/20xnflL1X6vf2MYI0VCP +vGZxoQxqoLUM5MMqzkzW//9M7+eio4WIaYXJzYjQv/ZRFkTGgnZIOSTPaEfhhnLi +jwARAQABiQE2BBgBAgAJBQJNrjxqAhsMACEJEPzyyxeSBayQFiEEU1fzsRFojYjB +2IEZ/PLLF5IFrJA2Wwf6Am4E5AvHXSRsRmjwLjptaDp67WerwKwnqzezyxaGj2c5 +mCarysywJa6G7CEgMqIWu9ADSnkKh8Qg+fzdrhuqPONshjDWZJwNlkoIxILvgkxl +RcQ9BGEi0CWzF2Zk8kxZnXIUVV4XW94JXXJvoW0aWp1bj8iFztf1tMvrk1YXo5Rd +TiDucTjU27zW0aIjDIr1/r11mO5TfZGc8Kw1TCEWmT6GmJBWI/8vwCxpsvoXKtPV +xoFwlwBLSVW7gAACvoUbBVycmXW8+j1fczzh+Wn1Y01lxsgGmPwoYjzp8wFm2OCh +LFcXnCero1/fOThZH15G+l7DuA4hn+yB5A2w38URiQ== +=NtCF +-----END PGP PUBLIC KEY BLOCK----- diff --git a/libre/netpbm/netpbm-CAN-2005-2471.patch b/libre/netpbm/netpbm-CAN-2005-2471.patch index e4e93735b..f7f2ae4ef 100644 --- a/libre/netpbm/netpbm-CAN-2005-2471.patch +++ b/libre/netpbm/netpbm-CAN-2005-2471.patch @@ -1,9 +1,9 @@ --- netpbm-10.29/converter/other/pstopnm.c.CAN-2005-2471 2005-08-15 02:39:46.000000000 +0200 +++ netpbm-10.29/converter/other/pstopnm.c 2005-08-16 15:38:15.000000000 +0200 -@@ -818,11 +818,11 @@ +@@ -896,11 +896,11 @@ ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, textalphabitsopt, - "-q", "-dNOPAUSE", + "-q", "-dNOPAUSE", - "-dSAFER", "-"); + "-dPARANOIDSAFER", "-"); } @@ -11,6 +11,6 @@ execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, - textalphabitsopt, "-q", "-dNOPAUSE", "-dSAFER", "-", NULL); + textalphabitsopt, "-q", "-dNOPAUSE", "-dPARANOIDSAFER", "-", NULL); - + pm_error("execl() of Ghostscript ('%s') failed, errno=%d (%s)", ghostscriptProg, errno, strerror(errno)); diff --git a/libre/netpbm/netpbm-security-code.patch b/libre/netpbm/netpbm-security-code.patch index 9e2e259f5..b3b92d4bd 100644 --- a/libre/netpbm/netpbm-security-code.patch +++ b/libre/netpbm/netpbm-security-code.patch @@ -32,13 +32,13 @@ index aac7479..5f1a51a 100644 --- a/converter/other/gemtopnm.c +++ b/converter/other/gemtopnm.c @@ -106,6 +106,7 @@ main(argc, argv) - - pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 ); + else + type = PPM_TYPE; + overflow_add(cols, padright); - { - /* allocate input row data structure */ - int plane; + pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 ); + + { diff --git a/converter/other/jpegtopnm.c b/converter/other/jpegtopnm.c index ab3b18e..c324b86 100644 --- a/converter/other/jpegtopnm.c @@ -318,21 +318,21 @@ index 2f8a42b..1c8d236 100644 --- a/converter/pbm/pbmtoppa/pbm.c +++ b/converter/pbm/pbmtoppa/pbm.c @@ -106,6 +106,7 @@ int pbm_readline(pbm_stat* pbm,unsigned char* data) - return 0; - - case P4: -+ overflow_add(pbm->width, 7); - tmp=(pbm->width+7)/8; - tmp2=fread(data,1,tmp,pbm->fptr); - if(tmp2 == tmp) -@@ -130,6 +131,7 @@ void pbm_unreadline (pbm_stat *pbm, void *data) - return; - - pbm->unread = 1; -+ overflow_add(pbm->width, 7); - pbm->revdata = malloc ((pbm->width+7)/8); - memcpy (pbm->revdata, data, (pbm->width+7)/8); - pbm->current_line--; + break; + case P4: { + int tmp, tmp2; ++ overflow_add(pbmStatP->width, 7); + tmp = (pbmStatP->width+7)/8; + tmp2 = fread(data,1,tmp,pbmStatP->fptr); + if (tmp2 == tmp) { +@@ -185,6 +186,7 @@ void pbm_unreadline (pbm_stat *pbm, void *data) + + if (!pbmStatP->unread) { + pbmStatP->unread = 1; ++ overflow_add(pbmStatP->width, 7); + pbmStatP->revdata = malloc ((pbmStatP->width+7)/8); + memcpy(pbmStatP->revdata, data, (pbmStatP->width+7)/8); + --pbmStatP->current_line; diff --git a/converter/pbm/pbmtoppa/pbmtoppa.c b/converter/pbm/pbmtoppa/pbmtoppa.c index f43c08a..98e0284 100644 --- a/converter/pbm/pbmtoppa/pbmtoppa.c @@ -491,7 +491,7 @@ index 662be0b..2a86efc 100644 @@ -1355,6 +1373,9 @@ dcol_to_ppm(FILE * const ifP, if( redmaxval != maxval || greenmaxval != maxval || bluemaxval != maxval ) pm_message("scaling colors to %d bits", pm_maxvaltobits(maxval)); - + + overflow_add(redmaxval, 1); + overflow_add(greenmaxval, 1); + overflow_add(bluemaxval, 1); @@ -500,14 +500,14 @@ index 662be0b..2a86efc 100644 MALLOCARRAY_NOFAIL(bluetable, bluemaxval +1); @@ -1784,7 +1805,9 @@ PCHG_ConvertSmall(PCHG, cmap, mask, datasize) ChangeCount32 = *data++; - datasize -= 2; + remDataSize -= 2; + overflow_add(ChangeCount16, ChangeCount32); changes = ChangeCount16 + ChangeCount32; + overflow_add(changes, 1); - for( i = 0; i < changes; i++ ) { - if( totalchanges >= PCHG->TotalChanges ) goto fail; - if( datasize < 2 ) goto fail; + for (i = 0; i < changes; ++i) { + if (totalchanges >= pchgP->TotalChanges) goto fail; + if (remDataSize < 2) goto fail; @@ -2049,6 +2072,9 @@ read_pchg(FILE * const ifP, cmap->mp_change[i] = NULL; if( PCHG.StartLine < 0 ) { @@ -579,51 +579,37 @@ diff --git a/converter/ppm/pjtoppm.c b/converter/ppm/pjtoppm.c index 7b694fb..62ce77e 100644 --- a/converter/ppm/pjtoppm.c +++ b/converter/ppm/pjtoppm.c -@@ -127,20 +127,22 @@ main(argc, argv) +@@ -127,11 +127,15 @@ main(argc, argv) case 'V': /* send plane */ case 'W': /* send last plane */ - if (rows == -1 || r >= rows || image == NULL) { -- if (rows == -1 || r >= rows) -+ if (rows == -1 || r >= rows) { -+ overflow_add(rows, 100); - rows += 100; + if (row >= rowsX || image == NULL) { +- if (row >= rowsX) ++ if (row >= rowsX) { ++ overflow_add(rowsX, 100); + rowsX += 100; + } + if (image == NULL) { -- MALLOCARRAY(image, rows * planes); -- MALLOCARRAY(imlen, rows * planes); +- MALLOCARRAY(image, uintProduct(rowsX, planes)); +- MALLOCARRAY(imlen, uintProduct(rowsX, planes)); + image = (unsigned char **) -+ malloc3(rows , planes , sizeof(unsigned char *)); -+ imlen = (int *) malloc3(rows , planes, sizeof(int)); - } - else { -- image = (unsigned char **) -- realloc(image, -- rows * planes * -- sizeof(unsigned char *)); -- imlen = (int *) -- realloc(imlen, rows * planes * sizeof(int)); -- } -+ overflow2(rows,planes); -+ image = (unsigned char **) -+ realloc2(image, rows * planes, -+ sizeof(unsigned char *)); -+ imlen = (int *) realloc2(imlen, rows * planes, sizeof(int)); } - } - if (image == NULL || imlen == NULL) - pm_error("out of memory"); ++ malloc3(rowsX , planes , sizeof(unsigned char *)); ++ imlen = (int *) malloc3(rowsX , planes, sizeof(int)); + } else { + REALLOCARRAY(image, uintProduct(rowsX, planes)); + REALLOCARRAY(imlen, uintProduct(rowsX, planes)); @@ -212,8 +214,10 @@ main(argc, argv) - for (i = 0, c = 0; c < imlen[p + r * planes]; c += 2) - for (cmd = image[p + r * planes][c], - val = image[p + r * planes][c+1]; -- cmd >= 0 && i < newcols; cmd--, i++) + col += 2) + for (cmd = image[plane + row * planes][col], + val = image[plane + row * planes][col+1]; +- cmd >= 0 && i < newcols; cmd--, i++) + cmd >= 0 && i < newcols; cmd--, i++) { buf[i] = val; + overflow_add(i, 1); + } - cols = cols > i ? cols : i; - free(image[p + r * planes]); - /* + cols = MAX(cols, i); + free(image[plane + row * planes]); + /* @@ -224,6 +228,7 @@ main(argc, argv) image[p + r * planes] = (unsigned char *) realloc(buf, i); } @@ -831,9 +817,9 @@ index 6ba4cb4..fc6a498 100644 --- a/converter/ppm/sldtoppm.c +++ b/converter/ppm/sldtoppm.c @@ -464,6 +464,8 @@ slider(slvecfn slvec, - + /* Allocate image buffer and clear it to black. */ - + + overflow_add(ixdots, 1); + overflow_add(iydots, 1); pixels = ppm_allocarray(pixcols = ixdots + 1, pixrows = iydots + 1); @@ -869,13 +855,13 @@ index f49c8d9..580e5e0 100644 --- a/editor/pbmreduce.c +++ b/editor/pbmreduce.c @@ -94,6 +94,7 @@ main( argc, argv ) - if (halftone == QT_FS) { - unsigned int col; - /* Initialize Floyd-Steinberg. */ + + unsigned int col; + + overflow_add(newcols, 2); - MALLOCARRAY(thiserr, newcols + 2); - MALLOCARRAY(nexterr, newcols + 2); - if (thiserr == NULL || nexterr == NULL) + MALLOCARRAY(fsP->thiserr, newcols + 2); + MALLOCARRAY(fsP->nexterr, newcols + 2); + diff --git a/editor/pnmgamma.c b/editor/pnmgamma.c index b357b0d..ec612d3 100644 --- a/editor/pnmgamma.c @@ -939,12 +925,12 @@ index b2448cb..b924120 100644 MALLOCARRAY(fserrP->thiserr, pamP->depth); @@ -465,6 +466,7 @@ floydInitRow(struct pam * const pamP, struct fserr * const fserrP) { - int col; - + unsigned int col; + + overflow_add(pamP->width, 2); for (col = 0; col < pamP->width + 2; ++col) { unsigned int plane; - for (plane = 0; plane < pamP->depth; ++plane) + for (plane = 0; plane < pamP->depth; ++plane) diff --git a/editor/pnmscalefixed.c b/editor/pnmscalefixed.c index 884ca31..747cd8f 100644 --- a/editor/pnmscalefixed.c @@ -1004,42 +990,6 @@ index 6cb8d3a..6f4bde9 100644 MALLOCARRAY(hist, inpam.maxval + 1); if (hist == NULL) pm_error("Unable to allocate memory for histogram."); -diff --git a/generator/pbmtext.c b/generator/pbmtext.c -index 9f4366d..445d718 100644 ---- a/generator/pbmtext.c -+++ b/generator/pbmtext.c -@@ -96,12 +96,14 @@ parseCommandLine(int argc, const char ** argv, - - for (i = 1; i < argc; ++i) { - if (i > 1) { -+ overflow_add(totaltextsize, 1); - totaltextsize += 1; - text = realloc(text, totaltextsize); - if (text == NULL) - pm_error("out of memory allocating space for input text"); - strcat(text, " "); -- } -+ } -+ overflow_add(totaltextsize, strlen(argv[i])); - totaltextsize += strlen(argv[i]); - text = realloc(text, totaltextsize); - if (text == NULL) -@@ -712,6 +714,7 @@ getText(const char cmdline_text[], - pm_error("A line of input text is longer than %u characters." - "Cannot process.", (unsigned)sizeof(buf)-1); - if (lineCount >= maxlines) { -+ overflow2(maxlines, 2); - maxlines *= 2; - REALLOCARRAY(text_array, maxlines); - if (text_array == NULL) -@@ -832,6 +835,7 @@ main(int argc, const char *argv[]) { - hmargin = fontP->maxwidth; - } else { - vmargin = fontP->maxheight; -+ overflow2(2, fontP->maxwidth); - hmargin = 2 * fontP->maxwidth; - } - } diff --git a/lib/libpam.c b/lib/libpam.c index cc6368e..4e10572 100644 --- a/lib/libpam.c @@ -1049,13 +999,13 @@ index cc6368e..4e10572 100644 tuple * tuplerow; - tuplerow = malloc(pamP->width * (sizeof(tuple *) + bytesPerTuple)); -- +- + overflow_add(sizeof(tuple *), bytesPerTuple); + tuplerow = malloc2(pamP->width, (sizeof(tuple *) + bytesPerTuple)); + if (tuplerow != NULL) { /* Now we initialize the pointers to the individual tuples - to make this a regulation C two dimensional array. + to make this a regulation C two dimensional array. diff --git a/lib/libpammap.c b/lib/libpammap.c index 55e1d3f..04b1ba3 100644 --- a/lib/libpammap.c @@ -1143,7 +1093,7 @@ index e9f1405..da54391 100644 +void __overflow2(int, int); +void overflow3(int, int, int); +void overflow_add(int, int); -+ ++void *realloc2(void*, int, int); #endif diff --git a/other/pnmcolormap.c b/other/pnmcolormap.c diff --git a/libre/netpbm/netpbm-security-scripts.patch b/libre/netpbm/netpbm-security-scripts.patch index 0dfe84f43..66fd14bea 100644 --- a/libre/netpbm/netpbm-security-scripts.patch +++ b/libre/netpbm/netpbm-security-scripts.patch @@ -2,18 +2,6 @@ diff --git a/converter/other/anytopnm b/converter/other/anytopnm index acf8813..335312a 100755 --- a/converter/other/anytopnm +++ b/converter/other/anytopnm -@@ -511,10 +511,7 @@ else - inputFile="-" - fi - --tempdir="${TMPDIR-/tmp}/anytopnm.$$" --mkdir -m 0700 $tempdir || \ -- { echo "Could not create temporary file. Exiting."; exit 1;} --trap 'rm -rf $tempdir' 0 -+tempdir=$(mktemp -d -t anytopnm.XXXXXXXXXX) || exit 1 - - # Take out all spaces - # Find the filename extension for last-ditch efforts later @@ -537,12 +534,17 @@ typeDescription=`file "$file" | cut -d: -f2- | cut -c2-` determineType "$file" "$mimeType" "$typeDescription" "$fileExtension" @@ -35,38 +23,10 @@ index acf8813..335312a 100755 +fi + exit 0 -diff --git a/editor/pamstretch-gen b/editor/pamstretch-gen -index ba0e818..250fca0 100755 ---- a/editor/pamstretch-gen -+++ b/editor/pamstretch-gen -@@ -31,9 +31,7 @@ if [ "$1" = "" ]; then - exit 1 - fi - --tempdir="${TMPDIR-/tmp}/pamstretch-gen.$$" --mkdir -m 0700 $tempdir || \ -- { echo "Could not create temporary file. Exiting."; exit 1;} -+tempfile=$(mktemp /tmp/pnmig.XXXXXXXXXX) || exit 1 - trap 'rm -rf $tempdir' 0 1 3 15 - - tempfile=$tempdir/pnmig diff --git a/editor/pnmmargin b/editor/pnmmargin index 0f57d1d..e0d3625 100755 --- a/editor/pnmmargin +++ b/editor/pnmmargin -@@ -11,11 +11,7 @@ - # documentation. This software is provided "as is" without express or - # implied warranty. - --tempdir="${TMPDIR-/tmp}/pnmmargin.$$" --mkdir -m 0700 $tempdir || \ -- { echo "Could not create temporary file. Exiting." 1>&2; exit 1;} --trap 'rm -rf $tempdir' 0 1 3 15 -- -+tempdir=$(mktemp -d -t ppmmargin.XXXXXXX) || exit 1 - tmp1=$tempdir/pnmm1 - tmp2=$tempdir/pnmm2 - tmp3=$tempdir/pnmm3 @@ -90,6 +86,7 @@ else -white | -black ) pnmpad $plainopt $color \ @@ -348,22 +308,5 @@ index 027fc79..8eb094f 100755 +system("rm $tmpdir/junk*$$.ppm"); exit(0); -diff --git a/editor/ppmshadow b/editor/ppmshadow -index 62cdf8b..72e1b22 100755 ---- a/editor/ppmshadow -+++ b/editor/ppmshadow -@@ -97,9 +97,10 @@ sub makeConvolutionKernel($$) { - - - my $tmpdir = $ENV{TMPDIR} || "/tmp"; --my $ourtmp = "$tmpdir/ppmshadow$$"; --mkdir($ourtmp, 0777) or -- die("Unable to create directory for temporary files '$ourtmp"); -+my $ourtmp; chomp($ourtmp = `mktemp -d -t PPMshadow.XXXXXX`); -+if ($? >> 8) { -+ die "Can't create directory for temporary files"; -+} - - # Process command line options diff --git a/libre/netpbm/nonfree-licenses-docs.patch b/libre/netpbm/nonfree-licenses-docs.patch new file mode 100644 index 000000000..2ccaaab25 --- /dev/null +++ b/libre/netpbm/nonfree-licenses-docs.patch @@ -0,0 +1,51 @@ +--- doc/copyright_summary 2024-04-13 16:55:26.577301602 -0400 ++++ doc/copyright_summary 2024-04-13 16:55:26.580634935 -0400 +@@ -335,48 +335,3 @@ + yuvsplittoppm: (A) 1993 Marcel Wijkstra + yuvtoppm: (A) 1987-1991 Jef Poskanzer, Abekas Video Systems Inc., DHD PostImage Inc. + zeisstopnm: (A) 1993 Oliver Trepte +- +-============================================================================== +-NON-FREE: +- +-The following programs have restrictions on their use or source: +- +-hpcdtoppm package: +-================== +-hpcdtoppm pcdindex +- +-* Copyright (c) 1992, 1993, 1994 by Hadmut Danisch (danisch@ira.uka.de). +-* Permission to use and distribute this software and its +-* documentation for noncommercial use and without fee is hereby granted, +-* provided that the above copyright notice appear in all copies and that +-* both that copyright notice and this permission notice appear in +-* supporting documentation. It is not allowed to sell this software in +-* any way. This software is not public domain. +- +-Note that Hpcdtoppm and Pcdindex are not distributed in the main Netpbm +-package on Sourceforge, as Sourceforge does not offer distribution services +-for software licensed in this way. These programs are distributed in the +-supplemental Netpbm package on Ibiblio. +- +-filter to create GIFs - patent restricted. (http://www.unisys.com/unisys/lzw/) +-ppmtogif: (A) 1989 Jef Poskanzer +- +-The Unisys patent, at least in the US, expired in 2003. +- +-============================================================================= +-UNKNOWN, SO NOT DISTRIBUTED: +- +-The following programs are in the upstream source package, but do not +-have sufficient copyright and license information to be redistributed: +- +-pamchannel: No copyright / license text found +-pamtopnm: No copyright / license text found +-pbmto4425: No copyright / license text found +-pbmtoln03: No copyright / license text found +-pbmtolps: No copyright / license text found +-pbmtopk: No copyright / license text found +-pktopbm: No copyright / license text found +-ppmtopjxl: No copyright / license text found +-spottopgm: No copyright / license text found +- +- diff --git a/libre/netpbm/reproducible-man-gzip.patch b/libre/netpbm/reproducible-man-gzip.patch index f6f4f0df7..ec06eaf1f 100644 --- a/libre/netpbm/reproducible-man-gzip.patch +++ b/libre/netpbm/reproducible-man-gzip.patch @@ -2,15 +2,15 @@ diff -aur netpbm-10.73.31.old/buildtools/manpage.mk netpbm-10.73.31/buildtools/m --- netpbm-10.73.31.old/buildtools/manpage.mk 2020-05-28 18:41:20.400790506 +0200 +++ netpbm-10.73.31/buildtools/manpage.mk 2020-05-28 18:50:50.444143414 +0200 @@ -388,9 +388,9 @@ - # This will install the generated man pages - installman: + .PHONY : installman + installman: report set -x -- for f in netpbm.1 $(MAN1); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man1/$$f.gz; fi; done -- for f in $(MAN3); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man3/$$f.gz; fi; done -- for f in $(MAN5); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man5/$$f.gz; fi; done -+ for f in netpbm.1 $(MAN1); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man1/$$f.gz; fi; done -+ for f in $(MAN3); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man3/$$f.gz; fi; done -+ for f in $(MAN5); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man5/$$f.gz; fi; done +- for f in $(wildcard $(MAN1)); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man1/$$f.gz; fi; done +- for f in $(wildcard $(MAN3)); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man3/$$f.gz; fi; done +- for f in $(wildcard $(MAN5)); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man5/$$f.gz; fi; done ++ for f in $(wildcard $(MAN1)); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man1/$$f.gz; fi; done ++ for f in $(wildcard $(MAN3)); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man3/$$f.gz; fi; done ++ for f in $(wildcard $(MAN5)); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man5/$$f.gz; fi; done - # This will uninstall them - uninstallman: + + # This will uninstall the man pages. diff --git a/libre/netpbm/use-source-date-epoch.patch b/libre/netpbm/use-source-date-epoch.patch deleted file mode 100644 index 496935fe6..000000000 --- a/libre/netpbm/use-source-date-epoch.patch +++ /dev/null @@ -1,13 +0,0 @@ -Only in netpbm-10.73.31/buildtools/: depend.mk -diff -aur netpbm-10.73.31.old/buildtools/stamp-date netpbm-10.73.31/buildtools/stamp-date ---- netpbm-10.73.31.old/buildtools/stamp-date 2020-05-30 17:34:29.833395465 +0200 -+++ netpbm-10.73.31/buildtools/stamp-date 2020-05-30 17:48:52.910091897 +0200 -@@ -9,7 +9,7 @@ - # documentation. This software is provided "as is" without express or - # implied warranty. - # --DATE=$(date) -+DATE="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}")" - LOGNAME_OR_UNKNOWN=${LOGNAME:-UNKNOWN} - USER=${USER:-$LOGNAME_OR_UNKNOWN} - if [ "$USER" = "UNKNOWN" ]; then -- cgit v1.2.2