summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/netpbm/PKGBUILD143
-rw-r--r--libre/netpbm/netpbm-security-code.patch94
2 files changed, 137 insertions, 100 deletions
diff --git a/libre/netpbm/PKGBUILD b/libre/netpbm/PKGBUILD
index d79440322..9bb74cbc2 100644
--- a/libre/netpbm/PKGBUILD
+++ b/libre/netpbm/PKGBUILD
@@ -1,12 +1,16 @@
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
# Contributor (Hyperbola): André Silva <emulatorman@hyperbola.info>
+# Maintainer (Arch):
+# parabola changes and rationale:
+# - Added armv7h and i686 support
+# - Removed nonfree parts
pkgname=netpbm
-pkgver=10.73.31
+pkgver=10.73.36
pkgrel=1
pkgrel+=.parabola1
pkgdesc="A toolkit for manipulation of graphic images"
-pkgdesc+=", without nonfree parts and patent issues"
+pkgdesc+=", without nonfree parts"
arch=('x86_64')
arch+=('i686' 'armv7h')
license=('custom' 'BSD' 'GPL' 'LGPL')
@@ -17,91 +21,35 @@ 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)
-sha256sums=('584c95f1ccdcd66d5ca68d7d5501728ae1184cba324d713f6b2a3ca86424243b'
+ netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch
+ reproducible-man-gzip.patch use-source-date-epoch.patch)
+sha256sums=('93b31b11b003082d5fd4037ae5c768b91ea7330b10247a25086c10b5dd71e445'
'74bcf840ee643c6917330c382484010cb99c004a3fcf05391bebcac63815acb3'
'SKIP'
'991aba7897e0710687369b4e2edfba1397ecd77d62578eac496afbc47b5ca970'
- '2eaa0f842d90bb3dcbc66273d58ec9117b97029da231b141159e580e65b98eb0'
- '2c397588d9cba2c40dee55c07713d5e77e0e04245db939fdc1962d7de4cf4a33')
+ '83d75a80ce999d8b69572e54f04c4d220c60b0d09f9e52d3236264535c3bf216'
+ '2c397588d9cba2c40dee55c07713d5e77e0e04245db939fdc1962d7de4cf4a33'
+ '8e3efdb4fcbfdc8e9a5c8e9663c7d6b9ecef3a2379ce38d2acc5669c339f6814'
+ '68055341833f482c6910a56c2fdfe046978a1a92fd8442a2a9209c82ce3e4d13')
validpgpkeys=('5357F3B111688D88C1D88119FCF2CB179205AC90')
-prepare() {
- cd $pkgname-$pkgver
-
- # Removing hpcdtoppm/pcdindex (non comercial)
- rm -rv converter/ppm/hpcdtoppm
-
- # Removing ppmtogif/giftopnm (patent restriction)
- rm -v converter/other/giftopnm.c converter/ppm/ppmtogif.c
- rm -v test/gif-quant-roundtrip.test test/gif-roundtrip.test test/all-in-place.ok
-
- # Removing programs without license information
- rm -v other/pamchannel.c test/pamchannel.ok
- rm -v converter/other/pamtopnm.c
- rm -v converter/pbm/pbmto4425.c
- rm -v converter/pbm/pbmtoln03.c
- rm -v converter/pbm/pbmtolps.c
- rm -v converter/pbm/pbmtopk.c
- rm -v converter/pbm/pktopbm.c
- rm -v converter/ppm/ppmtopjxl.c
- rm -v converter/pgm/spottopgm.c
-
- rm -v test/avs-roundtrip.test test/facesaver-roundtrip.test test/ilbm-roundtrip.test test/pamchannel.test \
- test/pamditherbw.test test/pamenlarge.test test/pamfile.test test/pfm-roundtrip.test \
- test/pgmtoppm.test test/pict-roundtrip.test test/pnminvert.test test/pnmremap1.test \
- test/pnmremap2.test test/pnmtopnm-plain.test test/pnm-pam-roundtrip.test test/pnm-plain-roundtrip.test \
- test/ps-alt-roundtrip.test test/ps-roundtrip.test test/sbig-roundtrip.test test/st4-roundtrip.test \
- test/targa-roundtrip.test test/utahrle-roundtrip.test test/winicon-roundtrip.test test/xwd-roundtrip.test
-
- # Removing references about hpcdtoppm/pcdindex (non comercial)
- sed -i 's/hpcdtoppm//g' converter/ppm/Makefile
- sed -i 's/hpcdtoppm\.1//g' buildtools/manpage.mk
- sed -i 's/pcdindex\.1//g' buildtools/manpage.mk
-
- # Removing references about ppmtogif/giftopnm (patent restriction)
- sed -i 's/ppmtogif//g' converter/ppm/Makefile test/all-in-place.test
- sed -i 's/ppmtogif\.1//g' buildtools/manpage.mk
- sed -i 's/giftopnm//g' converter/other/Makefile test/all-in-place.test
- sed -i 's/giftopnm\.1//g' buildtools/manpage.mk
- sed -i '/giftopnm/d' converter/other/pnmtopalm/README
-
- # Removing references about programs without license information
- sed -i 's/pamchannel//g' other/Makefile test/all-in-place.test
- sed -i 's/pamchannel\.1//g' buildtools/manpage.mk
- sed -i 's/pamchannel\.test//g' test/Test-Order
-
- sed -i 's/pamtopnm//g' converter/other/Makefile test/all-in-place.test
- sed -i 's/pamtopnm\.1//g' buildtools/manpage.mk
- sed -i '/pnmtopnm/d' netpbm.c
+remove_program() {
+ file="$1"
+ progname="$(basename ${file} | sed 's/\.c$//')"
- sed -i 's/pbmto4425//g' converter/pbm/Makefile test/all-in-place.test
- sed -i 's/pbmto4425\.1//g' buildtools/manpage.mk
-
- sed -i 's/pbmtoln03//g' converter/pbm/Makefile test/all-in-place.test
- sed -i 's/pbmtoln03\.1//g' buildtools/manpage.mk
-
- sed -i 's/pbmtolps//g' converter/pbm/Makefile test/all-in-place.test
- sed -i 's/pbmtolps\.1//g' buildtools/manpage.mk
-
- sed -i 's/pbmtopk//g' converter/pbm/Makefile test/all-in-place.test
- sed -i 's/pbmtopk\.1//g' buildtools/manpage.mk
-
- sed -i 's/pktopbm//g' converter/pbm/Makefile test/all-in-place.test
- sed -i 's/pktopbm\.1//g' buildtools/manpage.mk
-
- sed -i 's/ppmtopjxl//g' converter/ppm/Makefile test/all-in-place.test
- sed -i 's/ppmtopjxl\.1//g' buildtools/manpage.mk
-
- sed -i 's/spottopgm//g' converter/pgm/Makefile test/all-in-place.test
- sed -i 's/spottopgm\.1//g' buildtools/manpage.mk
+ rm -v "${file}"
+ sed -i "s/${progname}//g" "$(dirname ${file})/Makefile"
+ sed -i "s/${progname}\.1//g" buildtools/manpage.mk
+}
- #Removing references about nonfree licenses part
- sed -i '338,383d' doc/copyright_summary
+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
@@ -118,6 +66,49 @@ prepare() {
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
+
+ # 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
+ 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
+
+ # Tests have no license information
+ rm -v -rf test/
+ # Remove test from "SUPPORT_SUBDIRS = urt icon buildtools test"
+ awk '{
+ if ($1 != "SUPPORT_SUBDIRS") {
+ print $0
+ } else {
+ for (i=1;i<=NF;i++) {
+ if($i != "test") {
+ printf $i " "
+ }
+ }
+ }
+ }' GNUmakefile > GNUmakefile.1
+ mv -f GNUmakefile.1 GNUmakefile
+
+ sed -i '/pnmtopnm/d' netpbm.c
+
+ #Removing references about nonfree licenses part
+ sed -i '338,383d' doc/copyright_summary
+
}
build() {
diff --git a/libre/netpbm/netpbm-security-code.patch b/libre/netpbm/netpbm-security-code.patch
index 18f7bd71a..8674eb7a0 100644
--- a/libre/netpbm/netpbm-security-code.patch
+++ b/libre/netpbm/netpbm-security-code.patch
@@ -240,6 +240,27 @@ index 9f7004a..60e8477 100644
*colsP = (((int)head.h_wide - ' ') << 6) + ((int)head.l_wide - ' ');
*rowsP = (((int)head.h_high - ' ') << 6) + ((int) head.l_high - ' ');
*padrightP = ( ( *colsP + pad - 1 ) / pad ) * pad - *colsP;
+diff --git a/converter/pbm/pbmto4425.c b/converter/pbm/pbmto4425.c
+index 1d97ac6..c4c8cbb 100644
+--- a/converter/pbm/pbmto4425.c
++++ b/converter/pbm/pbmto4425.c
+@@ -2,6 +2,7 @@
+
+ #include "nstring.h"
+ #include "pbm.h"
++#include <string.h>
+
+ static char bit_table[2][3] = {
+ {1, 4, 0x10},
+@@ -160,7 +161,7 @@ main(int argc, char * argv[]) {
+ xres = vmap_width * 2;
+ yres = vmap_height * 3;
+
+- vmap = malloc(vmap_width * vmap_height * sizeof(char));
++ vmap = malloc3(vmap_width, vmap_height, sizeof(char));
+ if(vmap == NULL)
+ {
+ pm_error( "Cannot allocate memory" );
diff --git a/converter/pbm/pbmtogem.c b/converter/pbm/pbmtogem.c
index 9eab041..13b0257 100644
--- a/converter/pbm/pbmtogem.c
@@ -337,6 +358,18 @@ index 14c6b85..362b70e 100644
putinit(xbmVersion);
+diff --git a/converter/pbm/pktopbm.c b/converter/pbm/pktopbm.c
+index 712f339..b6fcb02 100644
+--- a/converter/pbm/pktopbm.c
++++ b/converter/pbm/pktopbm.c
+@@ -280,6 +280,7 @@ main(int argc, char *argv[]) {
+ if (flagbyte == 7) { /* long form preamble */
+ integer packetlength = get32() ; /* character packet length */
+ car = get32() ; /* character number */
++ overflow_add(packetlength, pktopbm_pkloc);
+ endofpacket = packetlength + pktopbm_pkloc;
+ /* calculate end of packet */
+ if ((car >= MAXPKCHAR) || !filename[car]) {
diff --git a/converter/pbm/thinkjettopbm.l b/converter/pbm/thinkjettopbm.l
index 5de4f2b..7f31de5 100644
--- a/converter/pbm/thinkjettopbm.l
@@ -674,6 +707,43 @@ index d116773..fc84cac 100644
obuf = (unsigned char *) pm_allocrow(cols, sizeof(unsigned char));
cbuf = (unsigned char *) pm_allocrow(cols * 2, sizeof(unsigned char));
+diff --git a/converter/ppm/ppmtopjxl.c b/converter/ppm/ppmtopjxl.c
+index ddf4963..b2c7e8e 100644
+--- a/converter/ppm/ppmtopjxl.c
++++ b/converter/ppm/ppmtopjxl.c
+@@ -306,6 +306,9 @@ main(int argc, const char * argv[]) {
+ if (maxval > PCL_MAXVAL)
+ pm_error("color range too large; reduce with ppmcscale");
+
++ if (cols < 0 || rows < 0)
++ pm_error("negative size is not possible");
++
+ /* Figure out the colormap. */
+ pm_message("Computing colormap...");
+ chv = ppm_computecolorhist(pixels, cols, rows, MAXCOLORS, &colors);
+@@ -325,6 +328,8 @@ main(int argc, const char * argv[]) {
+ case 0: /* direct mode (no palette) */
+ bpp = bitsperpixel(maxval); /* bits per pixel */
+ bpg = bpp; bpb = bpp;
++ overflow2(bpp, 3);
++ overflow_add(bpp*3, 7);
+ bpp = (bpp*3+7)>>3; /* bytes per pixel now */
+ bpr = (bpp<<3)-bpg-bpb;
+ bpp *= cols; /* bytes per row now */
+@@ -334,9 +339,13 @@ main(int argc, const char * argv[]) {
+ case 3: case 7: pclindex++;
+ default:
+ bpp = 8/pclindex;
++ overflow_add(cols, bpp);
++ if(bpp == 0)
++ pm_error("assert: no bpp");
+ bpp = (cols+bpp-1)/bpp; /* bytes per row */
+ }
+ }
++ overflow2(bpp,2);
+ inrow = (char *)malloc((unsigned)bpp);
+ outrow = (char *)malloc((unsigned)bpp*2);
+ runcnt = (signed char *)malloc((unsigned)bpp);
diff --git a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
index c673798..af2b445 100644
--- a/converter/ppm/ppmtowinicon.c
@@ -773,30 +843,6 @@ diff --git a/converter/ppm/ximtoppm.c b/converter/ppm/ximtoppm.c
index ce5e639..a39b689 100644
--- a/converter/ppm/ximtoppm.c
+++ b/converter/ppm/ximtoppm.c
-@@ -117,6 +117,7 @@ ReadXimHeader(FILE * const in_fp,
- header->bits_channel = atoi(a_head.bits_per_channel);
- header->alpha_flag = atoi(a_head.alpha_channel);
- if (strlen(a_head.author)) {
-+ overflow_add(strlen(a_head.author),1);
- if (!(header->author = calloc((unsigned int)strlen(a_head.author)+1,
- 1))) {
- pm_message("ReadXimHeader: can't calloc author string" );
-@@ -126,6 +127,7 @@ ReadXimHeader(FILE * const in_fp,
- strncpy(header->author, a_head.author, strlen(a_head.author));
- }
- if (strlen(a_head.date)) {
-+ overflow_add(strlen(a_head.date),1);
- if (!(header->date =calloc((unsigned int)strlen(a_head.date)+1,1))){
- pm_message("ReadXimHeader: can't calloc date string" );
- return(0);
-@@ -134,6 +136,7 @@ ReadXimHeader(FILE * const in_fp,
- strncpy(header->date, a_head.date, strlen(a_head.date));
- }
- if (strlen(a_head.program)) {
-+ overflow_add(strlen(a_head.program),1);
- if (!(header->program = calloc(
- (unsigned int)strlen(a_head.program) + 1, 1))) {
- pm_message("ReadXimHeader: can't calloc program string" );
@@ -160,6 +163,7 @@ ReadXimHeader(FILE * const in_fp,
if (header->nchannels == 3 && header->bits_channel == 8)
header->ncolors = 0;