From 89ee8a6edf7ceae66ff86e88778e07e80aa119fd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 17:46:34 +0200 Subject: gnu: rsem: Update to 1.3.1. * gnu/packages/bioinformatics.scm (rsem): Update to 1.3.1. [source]: Fetch from git; remove patch; delete bundled samtools. [arguments]: Pass make flags; adjust phases. [inputs]: Remove ncurses and samtools-0.1; add htslib-1.3. * gnu/packages/patches/rsem-makefile.patch: Remove patch. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/packages/patches/rsem-makefile.patch | 682 ------------------------------- 1 file changed, 682 deletions(-) delete mode 100644 gnu/packages/patches/rsem-makefile.patch (limited to 'gnu/packages/patches') diff --git a/gnu/packages/patches/rsem-makefile.patch b/gnu/packages/patches/rsem-makefile.patch deleted file mode 100644 index 5481dc685f..0000000000 --- a/gnu/packages/patches/rsem-makefile.patch +++ /dev/null @@ -1,682 +0,0 @@ -This patch simplifies the Makefile, making it much easier to build rsem -without the bundled version of samtools. It has already been submitted -upstream: https://github.com/bli25wisc/RSEM/pull/11 - -From 161894e91a16c7e15af57e4fcfe8cb613711c7fa Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 14:51:07 +0200 -Subject: [PATCH 1/7] remove all headers from Makefile - ---- - Makefile | 95 +++++++++++----------------------------------------------------- - 1 file changed, 16 insertions(+), 79 deletions(-) - -diff --git a/Makefile b/Makefile -index 54e2603..3a55ed8 100644 ---- a/Makefile -+++ b/Makefile -@@ -10,133 +10,70 @@ all : $(PROGRAMS) - sam/libbam.a : - cd sam ; ${MAKE} all - --Transcript.h : utils.h -- --Transcripts.h : utils.h my_assert.h Transcript.h -- --rsem-extract-reference-transcripts : utils.h my_assert.h GTFItem.h Transcript.h Transcripts.h extractRef.cpp -+rsem-extract-reference-transcripts : extractRef.cpp - $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts - --rsem-synthesis-reference-transcripts : utils.h my_assert.h Transcript.h Transcripts.h synthesisRef.cpp -+rsem-synthesis-reference-transcripts : synthesisRef.cpp - $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts - --BowtieRefSeqPolicy.h : RefSeqPolicy.h -- --RefSeq.h : utils.h -- --Refs.h : utils.h RefSeq.h RefSeqPolicy.h PolyARules.h -- -- - rsem-preref : preRef.o - $(CC) preRef.o -o rsem-preref - --preRef.o : utils.h RefSeq.h Refs.h PolyARules.h RefSeqPolicy.h AlignerRefSeqPolicy.h preRef.cpp -+preRef.o : preRef.cpp - $(CC) $(COFLAGS) preRef.cpp - -- --SingleRead.h : Read.h -- --SingleReadQ.h : Read.h -- --PairedEndRead.h : Read.h SingleRead.h -- --PairedEndReadQ.h : Read.h SingleReadQ.h -- -- --PairedEndHit.h : SingleHit.h -- --HitContainer.h : GroupInfo.h -- -- --SamParser.h : sam/sam.h sam/bam.h utils.h my_assert.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Transcripts.h -- -- - rsem-parse-alignments : parseIt.o sam/libbam.a - $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - --parseIt.o : utils.h GroupInfo.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h HitContainer.h SamParser.h Transcripts.h sam/sam.h sam/bam.h parseIt.cpp -+parseIt.o : parseIt.cpp - $(CC) -Wall -O2 -c -I. parseIt.cpp - -- --rsem-build-read-index : utils.h buildReadIndex.cpp -+rsem-build-read-index : buildReadIndex.cpp - $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index - -- --simul.h : boost/random.hpp -- --ReadReader.h : SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h ReadIndex.h -- --SingleModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h SingleHit.h ReadReader.h simul.h -- --SingleQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h SingleHit.h ReadReader.h simul.h -- --PairedEndModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h PairedEndRead.h PairedEndHit.h ReadReader.h simul.h -- --PairedEndQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h PairedEndReadQ.h PairedEndHit.h ReadReader.h simul.h -- --HitWrapper.h : HitContainer.h -- --sam_rsem_aux.h : sam/bam.h -- --sam_rsem_cvt.h : sam/bam.h Transcript.h Transcripts.h -- --BamWriter.h : sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h SingleHit.h PairedEndHit.h HitWrapper.h Transcript.h Transcripts.h -- --sampling.h : boost/random.hpp -- --WriteResults.h : utils.h my_assert.h GroupInfo.h Transcript.h Transcripts.h RefSeq.h Refs.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h -- - rsem-run-em : EM.o sam/libbam.a - $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - --EM.o : utils.h my_assert.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h GroupInfo.h HitContainer.h ReadIndex.h ReadReader.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h RefSeqPolicy.h PolyARules.h Profile.h NoiseProfile.h Transcript.h Transcripts.h HitWrapper.h BamWriter.h sam/bam.h sam/sam.h simul.h sam_rsem_aux.h sampling.h boost/random.hpp WriteResults.h EM.cpp -+EM.o : EM.cpp - $(CC) $(COFLAGS) EM.cpp - --bc_aux.h : sam/bam.h -- --BamConverter.h : utils.h my_assert.h sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h bc_aux.h Transcript.h Transcripts.h -- --rsem-tbam2gbam : utils.h Transcripts.h Transcript.h bc_aux.h BamConverter.h sam/sam.h sam/bam.h sam/libbam.a sam_rsem_aux.h sam_rsem_cvt.h tbam2gbam.cpp sam/libbam.a -+rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a - $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-bam2wig : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2wig.cpp -+rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp - $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --rsem-bam2readdepth : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2readdepth.cpp -+rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp - $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --wiggle.o: sam/bam.h sam/sam.h wiggle.cpp wiggle.h -+wiggle.o: wiggle.cpp - $(CC) $(COFLAGS) wiggle.cpp - - rsem-simulate-reads : simulation.o - $(CC) -o rsem-simulate-reads simulation.o - --simulation.o : utils.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h RefSeq.h GroupInfo.h Transcript.h Transcripts.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h Profile.h NoiseProfile.h simul.h boost/random.hpp WriteResults.h simulation.cpp -+simulation.o : simulation.cpp - $(CC) $(COFLAGS) simulation.cpp - - rsem-run-gibbs : Gibbs.o - $(CC) -o rsem-run-gibbs Gibbs.o -lpthread - --#some header files are omitted --Gibbs.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Gibbs.cpp -+Gibbs.o : Gibbs.cpp - $(CC) $(COFLAGS) Gibbs.cpp - --Buffer.h : my_assert.h -- - rsem-calculate-credibility-intervals : calcCI.o - $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --#some header files are omitted --calcCI.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Buffer.h calcCI.cpp -+calcCI.o : calcCI.cpp - $(CC) $(COFLAGS) calcCI.cpp - --rsem-get-unique : sam/bam.h sam/sam.h getUnique.cpp sam/libbam.a -+rsem-get-unique : getUnique.cpp sam/libbam.a - $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-sam-validator : sam/bam.h sam/sam.h my_assert.h samValidator.cpp sam/libbam.a -+rsem-sam-validator : samValidator.cpp sam/libbam.a - $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-scan-for-paired-end-reads : sam/bam.h sam/sam.h my_assert.h scanForPairedEndReads.cpp sam/libbam.a -+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a - $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - - ebseq : - -From ec136638a727632e20abfaeb65c22c46d15ca8c4 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:06:41 +0200 -Subject: [PATCH 2/7] include current dir, ./sam and ./boost by default - ---- - Makefile | 48 ++++++++++++++++++++++++------------------------ - 1 file changed, 24 insertions(+), 24 deletions(-) - -diff --git a/Makefile b/Makefile -index 3a55ed8..1dd97ca 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,6 +1,6 @@ - CC = g++ --CFLAGS = -Wall -c -I. --COFLAGS = -Wall -O3 -ffast-math -c -I. -+CFLAGS = -Wall -I. -I./sam -I./boost -+COFLAGS = -O3 -ffast-math -c - PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean -@@ -11,70 +11,70 @@ sam/libbam.a : - cd sam ; ${MAKE} all - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts -+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts -+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts - - rsem-preref : preRef.o -- $(CC) preRef.o -o rsem-preref -+ $(CC) $(CFLAGS) preRef.o -o rsem-preref - - preRef.o : preRef.cpp -- $(CC) $(COFLAGS) preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp - - rsem-parse-alignments : parseIt.o sam/libbam.a -- $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread -+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - - parseIt.o : parseIt.cpp -- $(CC) -Wall -O2 -c -I. parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index -+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - - rsem-run-em : EM.o sam/libbam.a -- $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread -+ $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - - EM.o : EM.cpp -- $(CC) $(COFLAGS) EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp - - rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a -- $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp -- $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - - rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp -- $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - - wiggle.o: wiggle.cpp -- $(CC) $(COFLAGS) wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp - - rsem-simulate-reads : simulation.o -- $(CC) -o rsem-simulate-reads simulation.o -+ $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o - - simulation.o : simulation.cpp -- $(CC) $(COFLAGS) simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp - - rsem-run-gibbs : Gibbs.o -- $(CC) -o rsem-run-gibbs Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread - - Gibbs.o : Gibbs.cpp -- $(CC) $(COFLAGS) Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - - calcCI.o : calcCI.cpp -- $(CC) $(COFLAGS) calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp - - rsem-get-unique : getUnique.cpp sam/libbam.a -- $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-sam-validator : samValidator.cpp sam/libbam.a -- $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a -- $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - - ebseq : - cd EBSeq ; ${MAKE} all - -From d366614ea50f79fdd93e3c76383ccb6fcdeaa8e0 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:10:49 +0200 -Subject: [PATCH 3/7] separate object rules from rules for executables - ---- - Makefile | 50 ++++++++++++++++++++++++++------------------------ - 1 file changed, 26 insertions(+), 24 deletions(-) - -diff --git a/Makefile b/Makefile -index 1dd97ca..ae4de3b 100644 ---- a/Makefile -+++ b/Makefile -@@ -10,6 +10,32 @@ all : $(PROGRAMS) - sam/libbam.a : - cd sam ; ${MAKE} all - -+ebseq : -+ cd EBSeq ; ${MAKE} all -+ -+ -+calcCI.o : calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -+ -+EM.o : EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -+ -+Gibbs.o : Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -+ -+preRef.o : preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -+ -+parseIt.o : parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp -+ -+simulation.o : simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -+ -+wiggle.o: wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -+ -+ - rsem-extract-reference-transcripts : extractRef.cpp - $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts - -@@ -19,24 +45,15 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp - rsem-preref : preRef.o - $(CC) $(CFLAGS) preRef.o -o rsem-preref - --preRef.o : preRef.cpp -- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -- - rsem-parse-alignments : parseIt.o sam/libbam.a - $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - --parseIt.o : parseIt.cpp -- $(CC) $(CFLAGS) -O2 -c parseIt.cpp -- - rsem-build-read-index : buildReadIndex.cpp - $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - - rsem-run-em : EM.o sam/libbam.a - $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - --EM.o : EM.cpp -- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -- - rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - -@@ -46,27 +63,15 @@ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp - rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp - $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --wiggle.o: wiggle.cpp -- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -- - rsem-simulate-reads : simulation.o - $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o - --simulation.o : simulation.cpp -- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -- - rsem-run-gibbs : Gibbs.o - $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread - --Gibbs.o : Gibbs.cpp -- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -- - rsem-calculate-credibility-intervals : calcCI.o - $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --calcCI.o : calcCI.cpp -- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -- - rsem-get-unique : getUnique.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - -@@ -76,9 +81,6 @@ rsem-sam-validator : samValidator.cpp sam/libbam.a - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - --ebseq : -- cd EBSeq ; ${MAKE} all -- - clean : - rm -f *.o *~ $(PROGRAMS) - cd sam ; ${MAKE} clean - -From 6ba1c33cccdf7c8e7df7a3189e7db204be3b1e8d Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:28:30 +0200 -Subject: [PATCH 4/7] add ./sam to library directories, link with -lbam - ---- - Makefile | 36 ++++++++++++++++++------------------ - 1 file changed, 18 insertions(+), 18 deletions(-) - -diff --git a/Makefile b/Makefile -index ae4de3b..a87cc4d 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,11 +1,11 @@ - CC = g++ --CFLAGS = -Wall -I. -I./sam -I./boost -+CFLAGS = -Wall -I. -I./sam -I./boost -L./sam - COFLAGS = -O3 -ffast-math -c - PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean - --all : $(PROGRAMS) -+all : sam/libbam.a $(PROGRAMS) - - sam/libbam.a : - cd sam ; ${MAKE} all -@@ -45,23 +45,23 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp - rsem-preref : preRef.o - $(CC) $(CFLAGS) preRef.o -o rsem-preref - --rsem-parse-alignments : parseIt.o sam/libbam.a -- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread -+rsem-parse-alignments : parseIt.o -+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp - $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - --rsem-run-em : EM.o sam/libbam.a -- $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread -+rsem-run-em : EM.o -+ $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread - --rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-tbam2gbam : tbam2gbam.cpp -+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ - --rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp -- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+rsem-bam2wig : wiggle.o bam2wig.cpp -+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ - --rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp -- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+rsem-bam2readdepth : wiggle.o bam2readdepth.cpp -+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o - $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o -@@ -72,14 +72,14 @@ rsem-run-gibbs : Gibbs.o - rsem-calculate-credibility-intervals : calcCI.o - $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --rsem-get-unique : getUnique.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-get-unique : getUnique.cpp -+ $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ - --rsem-sam-validator : samValidator.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-sam-validator : samValidator.cpp -+ $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ - --rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp -+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ - - clean : - rm -f *.o *~ $(PROGRAMS) - -From 5402b88c269df79ee245c1c59e15f3c8282a0220 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:33:02 +0200 -Subject: [PATCH 5/7] do not repeat target name, use $@ instead - ---- - Makefile | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/Makefile b/Makefile -index a87cc4d..7ec90a3 100644 ---- a/Makefile -+++ b/Makefile -@@ -37,22 +37,22 @@ wiggle.o: wiggle.cpp - - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts -+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts -+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ - - rsem-preref : preRef.o -- $(CC) $(CFLAGS) preRef.o -o rsem-preref -+ $(CC) $(CFLAGS) preRef.o -o $@ - - rsem-parse-alignments : parseIt.o -- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index -+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ - - rsem-run-em : EM.o -- $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread - - rsem-tbam2gbam : tbam2gbam.cpp - $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ -@@ -64,13 +64,13 @@ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp - $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o -- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o -+ $(CC) $(CFLAGS) -o $@ simulation.o - - rsem-run-gibbs : Gibbs.o -- $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread - - rsem-get-unique : getUnique.cpp - $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ - -From f60784bc7aa303cc825bd87dd3f5d7d26c51bded Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:44:53 +0200 -Subject: [PATCH 6/7] use automatic variables to refer to prerequisites - ---- - Makefile | 44 ++++++++++++++++++++++---------------------- - 1 file changed, 22 insertions(+), 22 deletions(-) - -diff --git a/Makefile b/Makefile -index 7ec90a3..6540d81 100644 ---- a/Makefile -+++ b/Makefile -@@ -15,71 +15,71 @@ ebseq : - - - calcCI.o : calcCI.cpp -- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - EM.o : EM.cpp -- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - Gibbs.o : Gibbs.cpp -- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - preRef.o : preRef.cpp -- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - parseIt.o : parseIt.cpp -- $(CC) $(CFLAGS) -O2 -c parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c $< - - simulation.o : simulation.cpp -- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - wiggle.o: wiggle.cpp -- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-preref : preRef.o -- $(CC) $(CFLAGS) preRef.o -o $@ -+ $(CC) $(CFLAGS) $< -o $@ - - rsem-parse-alignments : parseIt.o -- $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-run-em : EM.o -- $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread - - rsem-tbam2gbam : tbam2gbam.cpp -- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-bam2wig : wiggle.o bam2wig.cpp -- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ - - rsem-bam2readdepth : wiggle.o bam2readdepth.cpp -- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o -- $(CC) $(CFLAGS) -o $@ simulation.o -+ $(CC) $(CFLAGS) -o $@ $< - - rsem-run-gibbs : Gibbs.o -- $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lpthread - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lpthread - - rsem-get-unique : getUnique.cpp -- $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-sam-validator : samValidator.cpp -- $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp -- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - clean : - rm -f *.o *~ $(PROGRAMS) - -From 0cf9721077f67fb4ca15fdc59cbfbf24a944debd Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:49:19 +0200 -Subject: [PATCH 7/7] split long line - ---- - Makefile | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 6540d81..0ab04a5 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,7 +1,22 @@ - CC = g++ - CFLAGS = -Wall -I. -I./sam -I./boost -L./sam - COFLAGS = -O3 -ffast-math -c --PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads -+PROGRAMS = \ -+ rsem-extract-reference-transcripts \ -+ rsem-synthesis-reference-transcripts \ -+ rsem-preref \ -+ rsem-parse-alignments \ -+ rsem-build-read-index \ -+ rsem-run-em \ -+ rsem-tbam2gbam \ -+ rsem-run-gibbs \ -+ rsem-calculate-credibility-intervals \ -+ rsem-simulate-reads \ -+ rsem-bam2wig \ -+ rsem-get-unique \ -+ rsem-bam2readdepth \ -+ rsem-sam-validator \ -+ rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean - -- cgit v1.2.3 From c5327efb97208df569b4682ef5bfe4ac825d1c4f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 21 Sep 2018 04:34:10 -0400 Subject: gnu: libvpx: Add upstream security fix. * gnu/packages/patches/libvpx-use-after-free-in-postproc.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/video.scm (libvpx)[source]: Add patch. --- gnu/local.mk | 1 + .../libvpx-use-after-free-in-postproc.patch | 34 ++++++++++++++++++++++ gnu/packages/video.scm | 3 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/libvpx-use-after-free-in-postproc.patch (limited to 'gnu/packages/patches') diff --git a/gnu/local.mk b/gnu/local.mk index 4bca986619..9c69fd4f35 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -916,6 +916,7 @@ dist_patch_DATA = \ %D%/packages/patches/libutils-remove-damaging-includes.patch \ %D%/packages/patches/libvdpau-va-gl-unbundle.patch \ %D%/packages/patches/libvpx-CVE-2016-2818.patch \ + %D%/packages/patches/libvpx-use-after-free-in-postproc.patch \ %D%/packages/patches/libxslt-generated-ids.patch \ %D%/packages/patches/libxt-guix-search-paths.patch \ %D%/packages/patches/lierolibre-check-unaligned-access.patch \ diff --git a/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch new file mode 100644 index 0000000000..04f2a953b7 --- /dev/null +++ b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch @@ -0,0 +1,34 @@ +From 52add5896661d186dec284ed646a4b33b607d2c7 Mon Sep 17 00:00:00 2001 +From: Jerome Jiang +Date: Wed, 23 May 2018 15:43:00 -0700 +Subject: [PATCH] VP8: Fix use-after-free in postproc. + +The pointer in vp8 postproc refers to show_frame_mi which is only +updated on show frame. However, when there is a no-show frame which also +changes the size (thus new frame buffers allocated), show_frame_mi is +not updated with new frame buffer memory. + +Change the pointer in postproc to mi which is always updated. + +Bug: 842265 +Change-Id: I33874f2112b39f74562cba528432b5f239e6a7bd +--- + vp8/common/postproc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c +index d67ee8a57..8c292d616 100644 +--- a/vp8/common/postproc.c ++++ b/vp8/common/postproc.c +@@ -65,7 +65,7 @@ void vp8_deblock(VP8_COMMON *cm, YV12_BUFFER_CONFIG *source, + double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065; + int ppl = (int)(level + .5); + +- const MODE_INFO *mode_info_context = cm->show_frame_mi; ++ const MODE_INFO *mode_info_context = cm->mi; + int mbr, mbc; + + /* The pixel thresholds are adjusted according to if or not the macroblock +-- +2.19.0 + diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 4882f0476a..448773e0d9 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1242,7 +1242,8 @@ access to mpv's powerful playback capabilities.") (sha256 (base32 "0vvh89hvp8qg9an9vcmwb7d9k3nixhxaz6zi65qdjnd0i56kkcz6")) - (patches (search-patches "libvpx-CVE-2016-2818.patch")))) + (patches (search-patches "libvpx-use-after-free-in-postproc.patch" + "libvpx-CVE-2016-2818.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-shared" -- cgit v1.2.3 From e67ad5532f76b53e955149da2f1e237696ff0893 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 21 Sep 2018 03:28:03 -0400 Subject: gnu: icecat: Update to 60.2.0-gnu1 (pre-release). * gnu/packages/gnuzilla.scm (icecat): Update to 60.2.0-gnu1. [source]: Download pre-release from alpha.gnu.org. Remove obsolete patches. Comment out the code to delete the bundled copies of libevent, cairo, harfbuzz, and graphite2. [inputs]: Use the latest ffmpeg. Comment out libevent, cairo, harfbuzz, and graphite2. [native-inputs]: Add rust and cargo. [arguments]: Remove --enable-gio and --disable-gnomeui. Add --disable-stylo. Comment out --with-system-{libevent,harfbuzz,graphite2}, --enable-system-cairo. Import %cargo-build-system-modules. Add 'patch-cargo-checksums' phase. * gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch, gnu/packages/patches/icecat-bug-1413868-pt1.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Remove them. --- gnu/local.mk | 2 - gnu/packages/gnuzilla.scm | 160 ++--- .../icecat-CVE-2018-5157-and-CVE-2018-5158.patch | 441 -------------- gnu/packages/patches/icecat-bug-1413868-pt1.patch | 663 --------------------- 4 files changed, 49 insertions(+), 1217 deletions(-) delete mode 100644 gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch delete mode 100644 gnu/packages/patches/icecat-bug-1413868-pt1.patch (limited to 'gnu/packages/patches') diff --git a/gnu/local.mk b/gnu/local.mk index 9c69fd4f35..4097ad5fcd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -811,8 +811,6 @@ dist_patch_DATA = \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ - %D%/packages/patches/icecat-bug-1413868-pt1.patch \ - %D%/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch \ %D%/packages/patches/icecat-use-system-graphite2.patch \ %D%/packages/patches/icecat-use-system-harfbuzz.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 77a74a0ec4..db8f85cfb1 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -35,6 +35,7 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system cargo) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages databases) @@ -58,6 +59,7 @@ #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (gnu packages assembly) + #:use-module (gnu packages rust) #:use-module (gnu packages icu4c) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) @@ -478,112 +480,25 @@ security standards.") (define-public icecat (package (name "icecat") - (version "52.6.0-gnu1") + (version "60.2.0-gnu1") (source (origin (method url-fetch) + ;; Temporary URL pending official release: + (uri "https://alpha.gnu.org/gnu/gnuzilla/60.2.0/icecat-60.2.0-gnu1.tar.bz2") + #; (uri (string-append "mirror://gnu/gnuzilla/" (first (string-split version #\-)) "/" name "-" version ".tar.bz2")) (sha256 (base32 - "09fn54glqg1aa93hnz5zdcy07cps09dbni2b4200azh6nang630a")) + "0lqx7g79x15941rhjr3qsfwsny6vzc7d7abdmvjy6jjbqkqlc1zl")) (patches (list (search-patch "icecat-avoid-bundled-libraries.patch") - (search-patch "icecat-use-system-harfbuzz.patch") - (search-patch "icecat-use-system-graphite2.patch") - (mozilla-patch "icecat-bug-546387.patch" "d13e3fefb76e" "1b760r0bg2ydbl585wlmajljh1nlisrwxvjws5b28a3sgjy01i6k") - (mozilla-patch "icecat-bug-1350152.patch" "f822bda79c28" "1wf56169ca874shr6r7qx40s17h2gwj7ngmpyylrpmd1c6hipvsj") - (mozilla-patch "icecat-bug-1411708.patch" "34c968767eb7" "0l2jy201ikj3m3h66mvlsj4y0ki7cpm7x7nnfygbwnfxg42s1sip") - (mozilla-patch "icecat-bug-1375217.patch" "00fc630c9a46" "17pcprp452nslk6sac6sili0p74zh8w3g0v1wsdn0ikm9xmnphhv") - (mozilla-patch "icecat-CVE-2018-5145.patch" "f0ec180993d2" "0jiazxcwki83wr00fyh2g518ynsd33p7nk65zk4d1682gn22lc8v") - (mozilla-patch "icecat-CVE-2018-5130.patch" "a6a9e26688c1" "0cvizvilb4k422j2gzqcbakznvsffmk6n6xn1ayj5rgxfaizkkqk") - (mozilla-patch "icecat-CVE-2018-5125-pt1.patch" "198ad052621e" "1721zx8hifdlflrhvw6hmkdgjbvsmxl9n84iji5qywhlp2krdk9r") - (mozilla-patch "icecat-bug-1426087.patch" "391ea77ebfdb" "1fhkvd0z6mvdkj7m0d3jlj42rsdw5r4x122c1wb1i428228ifw6n") - (mozilla-patch "icecat-bug-1416307.patch" "54f2f7f93b30" "1ncjir16mqya37wgf6fy2rqki3vl433c4grjr3fypmlig6xfgg1l") - (mozilla-patch "icecat-CVE-2018-5127.patch" "2c4d7a59041b" "178c6gid89cvw52yqs43i6x6s5w0hslj0rfa2r8b4762ij3civ92") - (mozilla-patch "icecat-CVE-2018-5125-pt2.patch" "f87ef3774d5e" "0payf3az2w93nzl5qknqx290jbxk8v39rwhdgq7wyd5f245dywxk") - (mozilla-patch "icecat-CVE-2018-5125-pt3.patch" "ac743923f81d" "0msyr45xr1j5q4x6ah4r907pwjngyi0k6pp9y8ixk21cnwbzrdwx") - (mozilla-patch "icecat-CVE-2018-5129.patch" "456913d7e8b5" "0fx0s06kxxj7g4hllinaskgh41z3k48zml6yqqzxx485qk3hdh9x") - (mozilla-patch "icecat-bug-1334465-pt1.patch" "f95c5b881442" "0iaddhf65jd9cycj4bw0b207n2jiqkr4q84jifzyqn4ygs75wdqd") - (mozilla-patch "icecat-bug-1334465-pt2.patch" "8a4265c8fb41" "1d9zfdbrlw9wzr84b7pj7lxgy487lsx0kfd89287hjk0al8m6vrw") - (mozilla-patch "icecat-bug-1398021.patch" "28855df568d8" "1kmq836gniplxpjnvq8lhbcc1aqi56al628r1mzdy94b5yb0lis3") - (mozilla-patch "icecat-bug-1388020.patch" "e8ab2736499b" "0n28vcd65rxsyq3z22rfcfksryfndhm1i3g6ah3akg11jnagqf5v") - (mozilla-patch "icecat-CVE-2018-5125-pt4.patch" "014877bf17ea" "0hk90pnf7h7kvidji6ydvva1zpyraipn03pjhvprdqr7k2fqzmsz") - (mozilla-patch "icecat-CVE-2018-5125-pt5.patch" "5b3a5de48912" "1ifya05rcd34ryp9zawdacihhkkf2m0xn2q8m8c6v78bvxj0mgig") - (mozilla-patch "icecat-CVE-2018-5144.patch" "1df9b4404acd" "1sd59vsarfsbh3vlrzrqv6n1ni7vxdzm83j6s6g0fygl1h8kwijg") - (mozilla-patch "icecat-bug-1430173-pt1.patch" "9124c3972e2b" "13ns5yy39yzfx7lrkv4rgwdz6s6q0z4i09wkbxdvnkfsz17cd17i") - (mozilla-patch "icecat-bug-1430173-pt2.patch" "9f6dc031be51" "0bv2p98z5ahp3x9wxnhwxn87g21djvzzp7jy55ik90hqixsbhwdl") - (mozilla-patch "icecat-CVE-2018-5131.patch" "3102fbb97b32" "0kg0183v92gxjb9255xjwhxyd6gl77l9c0civx3040k975fybwlp") - (mozilla-patch "icecat-CVE-2018-5125-pt6.patch" "4904c0f4a645" "0lsq62ynksy1fbw0m87f1d741fyvrrp1vrznx5hx0l2p4g4frhv3") - (mozilla-patch "icecat-CVE-2018-5125-pt7.patch" "16b8073d5c30" "1dv94qqah1wjd3bxjvrkmjbb2f95d3d11zpm8mggdk52il575bwl") - (mozilla-patch "icecat-bug-1442127-pt1.patch" "f931f85b09da" "02s380w8a73g4w2wm810lbigh4z4rrlfy10ywwhv4lpkbk8xg7pr") - (mozilla-patch "icecat-bug-1442127-pt2.patch" "da5792b70f30" "116k9qja5ir9b3laazasp43f5jx59qq72nknmq5bn5v1ixya9r4l") - (mozilla-patch "icecat-CVE-2018-5125-pt8.patch" "62b831df8269" "109pn0hqn7s27580glv4z7qv1pmjzii9szvf3wkn97k5wybrzgkx") - (mozilla-patch "icecat-bug-1442504.patch" "8954ce68a364" "0bl65zw82bwqg0mmcri94pxqq6ibff7y5rclkzapb081p6yvf73q") - (mozilla-patch "icecat-CVE-2018-5125-pt9.patch" "8a16f439117c" "108iarql6z7h1r4rlzac6n6lrzs78x7kcdbfa0b5dbr5xc66jmgb") - (mozilla-patch "icecat-bug-1426603.patch" "ca0b92ecedee" "0dc3mdl4a3hrq4j384zjavf3splj6blv4masign710hk7svlgbhq") - (mozilla-patch "icecat-CVE-2018-5146.patch" "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr") - (mozilla-patch "icecat-CVE-2018-5147.patch" "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5") - (mozilla-patch "icecat-CVE-2018-5148.patch" "c3e447e07077" "0gmwy631f8ip4gr1mpbjk8bx1n1748wdls5zq4y8hpmpnq5g1wyx") - (mozilla-patch "icecat-CVE-2018-5178.patch" "17201199b18d" "1d0hcim1fwh0bklwpmnal1mv9d9kmyif1m15aj1nqkf1n3x4xc37") - (mozilla-patch "icecat-bug-1361699.patch" "a07d6c3ff262" "1z8mjg2487r8pxi0x951v6fwwr696q84f6hlzimc3r7bn5ds9r83") - (mozilla-patch "icecat-CVE-2018-5150-pt01.patch" "7127ccf8f88c" "0m4my7aflpp0wlqilr2m4axd7k2fyrs7jqdcz2rrz5pwivz1anvd") - (mozilla-patch "icecat-bug-1444231.patch" "57bd35fa8618" "0pl6x5amc5x6nhwl7qnmnff3jjjxmbs8r365bfzj58g7q5ihqwvf") - (mozilla-patch "icecat-CVE-2018-5150-pt02.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74") - (mozilla-patch "icecat-CVE-2018-5159.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f") - (mozilla-patch "icecat-CVE-2018-5154.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9") - (mozilla-patch "icecat-CVE-2018-5155.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0") - (mozilla-patch "icecat-CVE-2018-5168.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk") - (mozilla-patch "icecat-CVE-2018-5150-pt03.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p") - (mozilla-patch "icecat-CVE-2018-5150-pt04.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4") - (mozilla-patch "icecat-bug-1452416.patch" "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv") - (mozilla-patch "icecat-CVE-2018-5150-pt05.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3") - (mozilla-patch "icecat-CVE-2018-5150-pt06.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v") - (search-patch "icecat-CVE-2018-5157-and-CVE-2018-5158.patch") - (mozilla-patch "icecat-CVE-2018-5150-pt07.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7") - (mozilla-patch "icecat-bug-1453339.patch" "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm") - (mozilla-patch "icecat-CVE-2018-5150-pt08.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam") - (mozilla-patch "icecat-CVE-2018-5150-pt09.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd") - (mozilla-patch "icecat-bug-1452619.patch" "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i") - (mozilla-patch "icecat-CVE-2018-5156-pt1.patch" "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9") - (mozilla-patch "icecat-CVE-2018-5150-pt10.patch" "3f2ec03c0405" "0w02952dlxd2gmwghck2nm4rjjmc5ylg62bw6m1rvi35kcr134lr") - (mozilla-patch "icecat-CVE-2018-5183.patch" "f729bf78fb3a" "0xkj6jwxwdqkvb5c7wi16b8cm8qrnlrd3s9jnd46jg03iykrx56f") - (mozilla-patch "icecat-CVE-2018-5188-pt01.patch" "eb896089db47" "10lppk4x2d3pim71a36ky1dmg08rs5ckfiljwvfnr1cw6934qxl4") - (mozilla-patch "icecat-CVE-2018-5188-pt02.patch" "2374dca97bde" "0y1g55wvj44nzb1qfkl271jcf8s1ik8lcl1785z0zim4qzn7qkpa") - (mozilla-patch "icecat-CVE-2018-5188-pt03.patch" "70b6298e0c9e" "0n5jfy6c421dkybk8m18vd61y95zz0r64g1p1zlya3fps5knfaqi") - (mozilla-patch "icecat-CVE-2018-12365-pt1.patch" "4ef79fe9b3b7" "1c32z1ki1i6xj1nbb0xlxwqnmz48ikmy8dmp37rkjz8ssn04wgfg") - (mozilla-patch "icecat-CVE-2018-12365-pt2.patch" "9ad16112044a" "0ayya67sx7avcb8bplfdxb92l9g4mjrb1s3hby283llhqv0ikg9b") - (mozilla-patch "icecat-CVE-2018-12359.patch" "11d8a87fb6d6" "1rkmdk18llw0x1jakix75hlhy0hpsmlminnflagbzrzjli81gwm1") - (mozilla-patch "icecat-CVE-2018-5188-pt04.patch" "407b10ad1273" "16qzsfirw045xag96f1qvpdlibm8lwdj9l1mlli4n1vz0db91v9q") - (mozilla-patch "icecat-CVE-2018-6126.patch" "e76e2e481b17" "0hnx13msjy28n3bpa2c24kpzalam4bdk5gnp0f9k671l48rs9yb3") - (mozilla-patch "icecat-CVE-2018-5188-pt05.patch" "2c75bfcd465c" "1pjinj8qypafqm2fk68s3hzcbzcijn09qzrpcxvzq6bl1yfc1xfd") - (mozilla-patch "icecat-CVE-2018-5188-pt06.patch" "042f80f3befd" "0av918kin4bkrq7gnjz0h9w8kkq8rk9l93250lfl5kqrinza1gsk") - (mozilla-patch "icecat-CVE-2018-5188-pt07+bugs-1455071+1433642+1456604+1458320.patch" - "bb0451c9c4a0" "1lhm1b2a7c6jwhzsg3c830hfhp17p8j9zbcmgchpb8c5jkc3vw0x") - (mozilla-patch "icecat-CVE-2018-5188-pt08.patch" "8189b262e3b9" "13rh86ddwmj1bhv3ibbil3sv5xbqq1c9v1czgbsna5hxxkzc1y3b") - (mozilla-patch "icecat-CVE-2018-5188-pt09.patch" "9f81ae3f6e1d" "05vfg8a8jrzd93n1wvncmvdmqgf9cgsl8ryxgjs3032gbbjkga7q") - (mozilla-patch "icecat-CVE-2018-12360.patch" "face7a3dd5d7" "0jclw30mf693w8lrmvn0iankggj21nh4j3zh51q5363rj5xncdzx") - (mozilla-patch "icecat-CVE-2018-5188-pt10.patch" "7afb58c046c8" "1r0569r76712x7x1sw6xr0x06ilv6iw3fncb0f8r8b9mp6wrpx34") - (mozilla-patch "icecat-CVE-2018-12362-pt1.patch" "f1a745f8c42d" "11q73pb7a8f09xjzil4rhg5nr49zrnz1vb0prni0kqvrnppf5s40") - (mozilla-patch "icecat-CVE-2018-12362-pt2.patch" "1f9a430881cc" "0f79rv7njliqxx33z07n60b50jg0a596d1km7ayz2hivbl2d0168") - (mozilla-patch "icecat-CVE-2018-5188-pt11.patch" "28f4fc0a5141" "1a8f9z6c80in8ccj82ysdrcr2lqypp29l4acs50kwncm0c0b01zl") - (mozilla-patch "icecat-CVE-2018-12363.patch" "ad5a53a1d2b1" "0rhl4r39ydb3lkfp5pkwvhhzqgfh33s9r7b7jccgkrx6f13xyq78") - (mozilla-patch "icecat-CVE-2018-5188-pt12.patch" "0ddfc03c0454" "1b0xw2kj9765lvpl8iwr3wwcz40bdfp3dp4y9f546a61qsi9q9d6") - (mozilla-patch "icecat-CVE-2018-5156-pt2.patch" "dbf36189a364" "1awbyhy0r79i03sns2p0m78f9hb6c7kp4hwia2khx4qszlsr4j95") - (mozilla-patch "icecat-CVE-2018-5188-pt13.patch" "32509dfde003" "0cc3c92dgf5qynk093prq610c9x815l2fa24ddrw9czdzbwblsdq") - (mozilla-patch "icecat-bug-1462912.patch" "f18535a212da" "0zkqz9il89f1s1yrp5c6hj6kysy2x02iy50vgwdj30lr56gkpzmk") - (mozilla-patch "icecat-CVE-2018-5188-pt14.patch" "e8e9e1ef79f2" "0dc8p6fsppq3bhbpmp41f8mjxbr31pvgpga0a73dqdaicq5ydgj4") - (search-patch "icecat-bug-1413868-pt1.patch") - (mozilla-patch "icecat-CVE-2018-5188-pt15.patch" "9d4d31b2630d" "1lcbmsyi09kp80h1jgxj5l45zl24xn22h1lq7drbyjxsn1kggq4g") - (mozilla-patch "icecat-CVE-2018-12366-pt1.patch" "edf2c7dff493" "06xmyk7nm54cm9m6qc59wz8cxxfa5r25mf2xzdzy74iq5hwa1ac8") - (mozilla-patch "icecat-CVE-2018-5188-pt16.patch" "05549a4d1b80" "10q68cllshmmhlrbirm9h4gyc3ffrcpsxihfpcbxh90nv2h16jci") - (mozilla-patch "icecat-CVE-2018-12364.patch" "67b2d8924841" "197riigbb6l30959pygr0zlv7vaims78dg1mh0pg33pa7cbna0ds") - (mozilla-patch "icecat-CVE-2018-12366-pt2.patch" "528d4d997bb3" "0f375i96a404dkn0fanmd9pgfj3wyrhjfc5dwslw2s44gwfjhljb") - (mozilla-patch "icecat-bug-1369771.patch" "fab16ad7f256" "0kd8qm04sjgfgfg8yw3ivcxazb1d7v430g86chw4n64qybsh9ka3") - (mozilla-patch "icecat-CVE-2018-5188-pt17.patch" "068e249d02b4" "1iy9by1mg5qhp8502h31m8zm99aq2hx0c5n3hadd5pk11lfnq6ll") - (mozilla-patch "icecat-bug-1413868-pt2.patch" "755067c14b06" "089dwqwzcdg1l6aimi0i65q4dgb2iny5h8yjx63h9zgv77n0700a"))) + ;; FIXME (search-patch "icecat-use-system-harfbuzz.patch") + ;; FIXME (search-patch "icecat-use-system-graphite2.patch") + )) (modules '((guix build utils))) (snippet '(begin @@ -613,13 +528,13 @@ security standards.") "modules/freetype2" "modules/zlib" "modules/libbz2" - "ipc/chromium/src/third_party/libevent" + ;; UNBUNDLE-ME "ipc/chromium/src/third_party/libevent" "media/libjpeg" "media/libvpx" "security/nss" - "gfx/cairo" - "gfx/harfbuzz" - "gfx/graphite2" + ;; UNBUNDLE-ME "gfx/cairo" + ;; UNBUNDLE-ME "gfx/harfbuzz" + ;; UNBUNDLE-ME "gfx/graphite2" "js/src/ctypes/libffi" "db/sqlite3")) ;; Delete .pyc files, typically present in icecat source tarballs @@ -633,29 +548,29 @@ security standards.") (inputs `(("alsa-lib" ,alsa-lib) ("bzip2" ,bzip2) - ("cairo" ,cairo) + ;; UNBUNDLE-ME ("cairo" ,cairo) ("cups" ,cups) ("dbus-glib" ,dbus-glib) ("gdk-pixbuf" ,gdk-pixbuf) ("glib" ,glib) ("gtk+" ,gtk+) ("gtk+-2" ,gtk+-2) - ("graphite2" ,graphite2) + ;; UNBUNDLE-ME ("graphite2" ,graphite2) ("pango" ,pango) ("freetype" ,freetype) - ("harfbuzz" ,harfbuzz) + ;; UNBUNDLE-ME ("harfbuzz" ,harfbuzz) ("hunspell" ,hunspell) ("libcanberra" ,libcanberra) ("libgnome" ,libgnome) ("libjpeg-turbo" ,libjpeg-turbo) ("libxft" ,libxft) - ("libevent" ,libevent-2.0) + ;; UNBUNDLE-ME ("libevent" ,libevent-2.0) ("libxinerama" ,libxinerama) ("libxscrnsaver" ,libxscrnsaver) ("libxcomposite" ,libxcomposite) ("libxt" ,libxt) ("libffi" ,libffi) - ("ffmpeg" ,ffmpeg-3.4) + ("ffmpeg" ,ffmpeg) ("libvpx" ,libvpx) ("icu4c" ,icu4c) ("pixman" ,pixman) @@ -670,7 +585,9 @@ security standards.") ("zip" ,zip) ("zlib" ,zlib))) (native-inputs - `(("perl" ,perl) + `(("rust" ,rust) + ("cargo" ,rust "cargo") + ("perl" ,perl) ("python" ,python-2) ; Python 3 not supported ("python2-pysqlite" ,python2-pysqlite) ("yasm" ,yasm) @@ -687,11 +604,12 @@ security standards.") ;; practice somehow. See . #:validate-runpath? #f + #:imported-modules ,%cargo-build-system-modules ;for `generate-checksums' + #:configure-flags '("--enable-default-toolkit=cairo-gtk3" "--with-distribution-id=org.gnu" - "--enable-gio" "--enable-startup-notification" "--enable-pulseaudio" @@ -701,7 +619,9 @@ security standards.") "--disable-maintenance-service" "--disable-eme" "--disable-gconf" - "--disable-gnomeui" + + ;; Stylo requires LLVM/clang. For now, disable it. + "--disable-stylo" ;; Building with debugging symbols takes ~5GiB, so ;; disable it. @@ -716,15 +636,15 @@ security standards.") "--with-system-zlib" "--with-system-bz2" "--with-system-jpeg" ; must be libjpeg-turbo - "--with-system-libevent" + ;; UNBUNDLE-ME "--with-system-libevent" "--with-system-libvpx" "--with-system-icu" "--with-system-nspr" "--with-system-nss" - "--with-system-harfbuzz" - "--with-system-graphite2" + ;; UNBUNDLE-ME "--with-system-harfbuzz" + ;; UNBUNDLE-ME "--with-system-graphite2" "--enable-system-pixman" - "--enable-system-cairo" + ;; UNBUNDLE-ME "--enable-system-cairo" "--enable-system-ffi" "--enable-system-hunspell" "--enable-system-sqlite" @@ -774,6 +694,24 @@ security standards.") 'avcodec', 'avutil', 'pulse' ]\n\n" all))) #t)) + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda* _ + (use-modules (guix build cargo-build-system)) + (let ((null-file "/dev/null") + (null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) + (substitute* '("Cargo.lock" "servo/Cargo.lock") + (("(\"checksum .* = )\".*\"" all name) + (string-append name "\"" null-hash "\""))) + (for-each + (lambda (filename) + (delete-file filename) + (let ((dir (dirname filename))) + (display (string-append + "patch-cargo-checksums: generate-checksums for " + dir "\n")) + (generate-checksums dir null-file))) + (find-files "third_party/rust" ".cargo-checksum.json"))) + #t)) (replace 'configure ;; configure does not work followed by both "SHELL=..." and diff --git a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch b/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch deleted file mode 100644 index b776640133..0000000000 --- a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch +++ /dev/null @@ -1,441 +0,0 @@ -Based on -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Ryan VanderMeulen -# Date 1523630807 14400 -# Node ID 608e76ec5ba25cec2271d2b400c7bce2d4c5ef79 -# Parent 10b7f43b536f93151201d44d304c991aa9af5d0c -Bug 1452075 - Backport some upstream pdf.js fixes to ESR52. r=bdahl, r=yury, a=RyanVM - -diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm ---- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm -+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm -@@ -24,17 +24,18 @@ const Cc = Components.classes; - const Ci = Components.interfaces; - const Cr = Components.results; - const Cu = Components.utils; - // True only if this is the version of pdf.js that is included with icecat. - const MOZ_CENTRAL = JSON.parse('true'); - const PDFJS_EVENT_ID = 'pdf.js.message'; - const PDF_CONTENT_TYPE = 'application/pdf'; - const PREF_PREFIX = 'pdfjs'; --const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html'; -+const PDF_VIEWER_ORIGIN = "resource://pdf.js"; -+const PDF_VIEWER_WEB_PAGE = "resource://pdf.js/web/viewer.html"; - const MAX_NUMBER_OF_PREFS = 50; - const MAX_STRING_PREF_LENGTH = 128; - - Cu.import('resource://gre/modules/XPCOMUtils.jsm'); - Cu.import('resource://gre/modules/Services.jsm'); - Cu.import('resource://gre/modules/NetUtil.jsm'); - - XPCOMUtils.defineLazyModuleGetter(this, 'NetworkManager', -@@ -105,21 +106,25 @@ function log(aMsg) { - if (!getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) { - return; - } - var msg = 'PdfStreamConverter.js: ' + (aMsg.join ? aMsg.join('') : aMsg); - Services.console.logStringMessage(msg); - dump(msg + '\n'); - } - --function getDOMWindow(aChannel) { -+function getDOMWindow(aChannel, aPrincipal) { - var requestor = aChannel.notificationCallbacks ? - aChannel.notificationCallbacks : - aChannel.loadGroup.notificationCallbacks; - var win = requestor.getInterface(Components.interfaces.nsIDOMWindow); -+ // Ensure the window wasn't navigated to something that is not PDF.js. -+ if (!win.document.nodePrincipal.equals(aPrincipal)) { -+ return null; -+ } - return win; - } - - function getLocalizedStrings(path) { - var stringBundle = Cc['@mozilla.org/intl/stringbundle;1']. - getService(Ci.nsIStringBundleService). - createBundle('chrome://pdf.js/locale/' + path); - -@@ -627,31 +632,31 @@ var RangedChromeActions = (function Rang - data = this.dataListener.readData(); - - this.dataListener.onprogress = function (loaded, total) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'progressiveRead', - loaded: loaded, - total: total, - chunk: self.dataListener.readData() -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }; - this.dataListener.oncomplete = function () { - self.dataListener = null; - }; - } - - this.domWindow.postMessage({ - pdfjsLoadAction: 'supportsRangedLoading', - rangeEnabled: this.rangeEnabled, - streamingEnabled: this.streamingEnabled, - pdfUrl: this.pdfUrl, - length: this.contentLength, - data: data -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - - return true; - }; - - proto.requestDataRange = function RangedChromeActions_requestDataRange(args) { - if (!this.rangeEnabled) { - return; - } -@@ -663,23 +668,23 @@ var RangedChromeActions = (function Rang - // errors from chrome code for non-range requests, so this doesn't - // seem high-pri - this.networkManager.requestRange(begin, end, { - onDone: function RangedChromeActions_onDone(args) { - domWindow.postMessage({ - pdfjsLoadAction: 'range', - begin: args.begin, - chunk: args.chunk -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }, - onProgress: function RangedChromeActions_onProgress(evt) { - domWindow.postMessage({ - pdfjsLoadAction: 'rangeProgress', - loaded: evt.loaded, -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - } - }); - }; - - proto.abortLoading = function RangedChromeActions_abortLoading() { - this.networkManager.abortAllRequests(); - if (this.originalRequest) { - this.originalRequest.cancel(Cr.NS_BINDING_ABORTED); -@@ -718,26 +723,26 @@ var StandardChromeActions = (function St - var self = this; - - this.dataListener.onprogress = function ChromeActions_dataListenerProgress( - loaded, total) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'progress', - loaded: loaded, - total: total -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }; - - this.dataListener.oncomplete = - function StandardChromeActions_dataListenerComplete(data, errorCode) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'complete', - data: data, - errorCode: errorCode -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - - self.dataListener = null; - self.originalRequest = null; - }; - - return true; - }; - -@@ -972,31 +977,35 @@ PdfStreamConverter.prototype = { - var proxy = { - onStartRequest: function(request, context) { - listener.onStartRequest(aRequest, aContext); - }, - onDataAvailable: function(request, context, inputStream, offset, count) { - listener.onDataAvailable(aRequest, aContext, inputStream, - offset, count); - }, -- onStopRequest: function(request, context, statusCode) { -- // We get the DOM window here instead of before the request since it -- // may have changed during a redirect. -- var domWindow = getDOMWindow(channel); -+ onStopRequest(request, context, statusCode) { -+ var domWindow = getDOMWindow(channel, resourcePrincipal); -+ if (!Components.isSuccessCode(statusCode) || !domWindow) { -+ // The request may have been aborted and the document may have been -+ // replaced with something that is not PDF.js, abort attaching. -+ listener.onStopRequest(aRequest, context, statusCode); -+ return; -+ } - var actions; - if (rangeRequest || streamRequest) { - actions = new RangedChromeActions( - domWindow, contentDispositionFilename, aRequest, - rangeRequest, streamRequest, dataListener); - } else { - actions = new StandardChromeActions( - domWindow, contentDispositionFilename, aRequest, dataListener); - } - var requestListener = new RequestListener(actions); -- domWindow.addEventListener(PDFJS_EVENT_ID, function(event) { -+ domWindow.document.addEventListener(PDFJS_EVENT_ID, function(event) { - requestListener.receive(event); - }, false, true); - if (actions.supportsIntegratedFind()) { - var findEventManager = new FindEventManager(domWindow); - findEventManager.bind(); - } - listener.onStopRequest(aRequest, aContext, statusCode); - -diff --git a/browser/extensions/pdfjs/content/build/pdf.worker.js b/browser/extensions/pdfjs/content/build/pdf.worker.js ---- a/browser/extensions/pdfjs/content/build/pdf.worker.js -+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js -@@ -41648,16 +41648,32 @@ - var error = sharedUtil.error; - var info = sharedUtil.info; - var isArray = sharedUtil.isArray; - var isBool = sharedUtil.isBool; - var isDict = corePrimitives.isDict; - var isStream = corePrimitives.isStream; - var PostScriptLexer = corePsParser.PostScriptLexer; - var PostScriptParser = corePsParser.PostScriptParser; -+ function toNumberArray(arr) { -+ if (!Array.isArray(arr)) { -+ return null; -+ } -+ var length = arr.length; -+ for (var i = 0; i < length; i++) { -+ if (typeof arr[i] !== 'number') { -+ var result = new Array(length); -+ for (var j = 0; j < length; j++) { -+ result[j] = +arr[j]; -+ } -+ return result; -+ } -+ } -+ return arr; -+ } - var PDFFunction = function PDFFunctionClosure() { - var CONSTRUCT_SAMPLED = 0; - var CONSTRUCT_INTERPOLATED = 2; - var CONSTRUCT_STICHED = 3; - var CONSTRUCT_POSTSCRIPT = 4; - return { - getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, str) { - var i, ii; -@@ -41747,43 +41763,43 @@ - out[index] = [ - arr[i], - arr[i + 1] - ]; - ++index; - } - return out; - } -- var domain = dict.getArray('Domain'); -- var range = dict.getArray('Range'); -+ var domain = toNumberArray(dict.getArray('Domain')); -+ var range = toNumberArray(dict.getArray('Range')); - if (!domain || !range) { - error('No domain or range'); - } - var inputSize = domain.length / 2; - var outputSize = range.length / 2; - domain = toMultiArray(domain); - range = toMultiArray(range); -- var size = dict.get('Size'); -+ var size = toNumberArray(dict.get('Size')); - var bps = dict.get('BitsPerSample'); - var order = dict.get('Order') || 1; - if (order !== 1) { - // No description how cubic spline interpolation works in PDF32000:2008 - // As in poppler, ignoring order, linear interpolation may work as good - info('No support for cubic spline interpolation: ' + order); - } -- var encode = dict.getArray('Encode'); -+ var encode = toNumberArray(dict.getArray('Encode')); - if (!encode) { - encode = []; - for (var i = 0; i < inputSize; ++i) { -- encode.push(0); -- encode.push(size[i] - 1); -- } -- } -- encode = toMultiArray(encode); -- var decode = dict.getArray('Decode'); -+ encode.push([0, size[i] - 1]); -+ } -+ } else { -+ encode = toMultiArray(encode); -+ } -+ var decode = toNumberArray(dict.getArray('Decode')); - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - var samples = this.getSampleArray(size, outputSize, bps, str); - return [ - CONSTRUCT_SAMPLED, -@@ -41868,22 +41884,19 @@ - // Decode_2j, Decode_2j+1) - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - // y_j = min(max(r_j, range_2j), range_2j+1) - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); - } - }; - }, - constructInterpolated: function PDFFunction_constructInterpolated(str, dict) { -- var c0 = dict.getArray('C0') || [0]; -- var c1 = dict.getArray('C1') || [1]; -+ var c0 = toNumberArray(dict.getArray('C0')) || [0]; -+ var c1 = toNumberArray(dict.getArray('C1')) || [1]; - var n = dict.get('N'); -- if (!isArray(c0) || !isArray(c1)) { -- error('Illegal dictionary for interpolated function'); -- } - var length = c0.length; - var diff = []; - for (var i = 0; i < length; ++i) { - diff.push(c1[i] - c0[i]); - } - return [ - CONSTRUCT_INTERPOLATED, - c0, -@@ -41899,49 +41912,45 @@ - return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); - for (var j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + x * diff[j]; - } - }; - }, - constructStiched: function PDFFunction_constructStiched(fn, dict, xref) { -- var domain = dict.getArray('Domain'); -+ var domain = toNumberArray(dict.getArray('Domain')); - if (!domain) { - error('No domain'); - } - var inputSize = domain.length / 2; - if (inputSize !== 1) { - error('Bad domain for stiched function'); - } - var fnRefs = dict.get('Functions'); - var fns = []; - for (var i = 0, ii = fnRefs.length; i < ii; ++i) { -- fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i]))); -- } -- var bounds = dict.getArray('Bounds'); -- var encode = dict.getArray('Encode'); -+ fns.push(PDFFunction.parse(xref, xref.fetchIfRef(fnRefs[i]))); -+ } -+ var bounds = toNumberArray(dict.getArray('Bounds')); -+ var encode = toNumberArray(dict.getArray('Encode')); - return [ - CONSTRUCT_STICHED, - domain, - bounds, - encode, - fns - ]; - }, - constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) { - var domain = IR[1]; - var bounds = IR[2]; - var encode = IR[3]; -- var fnsIR = IR[4]; -- var fns = []; -+ var fns = IR[4]; - var tmpBuf = new Float32Array(1); -- for (var i = 0, ii = fnsIR.length; i < ii; i++) { -- fns.push(PDFFunction.fromIR(fnsIR[i])); -- } - return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) { - var clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - return v; -@@ -41968,18 +41977,18 @@ - // Prevent the value from becoming NaN as a result - // of division by zero (fixes issue6113.pdf). - tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - // call the appropriate function - fns[i](tmpBuf, 0, dest, destOffset); - }; - }, - constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) { -- var domain = dict.getArray('Domain'); -- var range = dict.getArray('Range'); -+ var domain = toNumberArray(dict.getArray('Domain')); -+ var range = toNumberArray(dict.getArray('Range')); - if (!domain) { - error('No domain.'); - } - if (!range) { - error('No range.'); - } - var lexer = new PostScriptLexer(fn); - var parser = new PostScriptParser(lexer); -@@ -42928,18 +42937,18 @@ - case 'IndexedCS': - var baseIndexedCS = IR[1]; - var hiVal = IR[2]; - var lookup = IR[3]; - return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup); - case 'AlternateCS': - var numComps = IR[1]; - var alt = IR[2]; -- var tintFnIR = IR[3]; -- return new AlternateCS(numComps, ColorSpace.fromIR(alt), PDFFunction.fromIR(tintFnIR)); -+ var tintFn = IR[3]; -+ return new AlternateCS(numComps, ColorSpace.fromIR(alt), tintFn); - case 'LabCS': - whitePoint = IR[1]; - blackPoint = IR[2]; - var range = IR[3]; - return new LabCS(whitePoint, blackPoint, range); - default: - error('Unknown name ' + name); - } -@@ -43067,22 +43076,22 @@ - var name = xref.fetchIfRef(cs[1]); - numComps = 1; - if (isName(name)) { - numComps = 1; - } else if (isArray(name)) { - numComps = name.length; - } - alt = ColorSpace.parseToIR(cs[2], xref, res); -- var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3])); -+ var tintFn = PDFFunction.parse(xref, xref.fetchIfRef(cs[3])); - return [ - 'AlternateCS', - numComps, - alt, -- tintFnIR -+ tintFn - ]; - case 'Lab': - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray('WhitePoint'); - blackPoint = params.getArray('BlackPoint'); - var range = params.getArray('Range'); - return [ - 'LabCS', -@@ -52483,9 +52492,9 @@ - initializeWorker(); - } - exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass; - exports.WorkerTask = WorkerTask; - exports.WorkerMessageHandler = WorkerMessageHandler; - })); - }.call(pdfjsLibs)); - exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler; --})); -\ No newline at end of file -+})); - diff --git a/gnu/packages/patches/icecat-bug-1413868-pt1.patch b/gnu/packages/patches/icecat-bug-1413868-pt1.patch deleted file mode 100644 index 18382dc33a..0000000000 --- a/gnu/packages/patches/icecat-bug-1413868-pt1.patch +++ /dev/null @@ -1,663 +0,0 @@ -Based on -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Honza Bambas -# Date 1528830658 14400 -# Node ID 431fa5dd4016bdab7e4bb0d3c4df85468fe337b0 -# Parent e8e9e1ef79f2a18c61ec1b87cfb214c8d4960f8e -Bug 1413868. r=valentin, a=RyanVM - -diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp ---- a/toolkit/xre/nsAppRunner.cpp -+++ b/toolkit/xre/nsAppRunner.cpp -@@ -4,16 +4,17 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #include "mozilla/dom/ContentParent.h" - #include "mozilla/dom/ContentChild.h" - #include "mozilla/ipc/GeckoChildProcessHost.h" - - #include "mozilla/ArrayUtils.h" - #include "mozilla/Attributes.h" -+#include "mozilla/FilePreferences.h" - #include "mozilla/ChaosMode.h" - #include "mozilla/IOInterposer.h" - #include "mozilla/Likely.h" - #include "mozilla/MemoryChecking.h" - #include "mozilla/Poison.h" - #include "mozilla/Preferences.h" - #include "mozilla/ScopeExit.h" - #include "mozilla/Services.h" -@@ -4304,16 +4305,20 @@ XREMain::XRE_mainRun() - // Need to write out the fact that the profile has been removed and potentially - // that the selected/default profile changed. - mProfileSvc->Flush(); - } - } - - mDirProvider.DoStartup(); - -+ // As FilePreferences need the profile directory, we must initialize right here. -+ mozilla::FilePreferences::InitDirectoriesWhitelist(); -+ mozilla::FilePreferences::InitPrefs(); -+ - OverrideDefaultLocaleIfNeeded(); - - #ifdef MOZ_CRASHREPORTER - nsCString userAgentLocale; - // Try a localized string first. This pref is always a localized string in - // IceCatMobile, and might be elsewhere, too. - if (NS_SUCCEEDED(Preferences::GetLocalizedCString("general.useragent.locale", &userAgentLocale))) { - CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("useragent_locale"), userAgentLocale); -diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp ---- a/toolkit/xre/nsEmbedFunctions.cpp -+++ b/toolkit/xre/nsEmbedFunctions.cpp -@@ -46,16 +46,17 @@ - #include "nsX11ErrorHandler.h" - #include "nsGDKErrorHandler.h" - #include "base/at_exit.h" - #include "base/command_line.h" - #include "base/message_loop.h" - #include "base/process_util.h" - #include "chrome/common/child_process.h" - -+#include "mozilla/FilePreferences.h" - #include "mozilla/ipc/BrowserProcessSubThread.h" - #include "mozilla/ipc/GeckoChildProcessHost.h" - #include "mozilla/ipc/IOThreadChild.h" - #include "mozilla/ipc/ProcessChild.h" - #include "ScopedXREEmbed.h" - - #include "mozilla/plugins/PluginProcessChild.h" - #include "mozilla/dom/ContentProcess.h" -@@ -680,16 +681,18 @@ XRE_InitChildProcess(int aArgc, - ::SetProcessShutdownParameters(0x280 - 1, SHUTDOWN_NORETRY); - #endif - - #if defined(MOZ_SANDBOX) && defined(XP_WIN) - // We need to do this after the process has been initialised, as - // InitLoggingIfRequired may need access to prefs. - mozilla::sandboxing::InitLoggingIfRequired(aChildData->ProvideLogFunction); - #endif -+ mozilla::FilePreferences::InitDirectoriesWhitelist(); -+ mozilla::FilePreferences::InitPrefs(); - - OverrideDefaultLocaleIfNeeded(); - - #if defined(MOZ_CRASHREPORTER) - #if defined(MOZ_CONTENT_SANDBOX) && !defined(MOZ_WIDGET_GONK) - AddContentSandboxLevelAnnotation(); - #endif - #endif -diff --git a/xpcom/io/FilePreferences.cpp b/xpcom/io/FilePreferences.cpp -new file mode 100644 ---- /dev/null -+++ b/xpcom/io/FilePreferences.cpp -@@ -0,0 +1,271 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+* License, v. 2.0. If a copy of the MPL was not distributed with this -+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "FilePreferences.h" -+ -+#include "mozilla/Preferences.h" -+#include "nsAppDirectoryServiceDefs.h" -+#include "nsDirectoryServiceDefs.h" -+#include "nsDirectoryServiceUtils.h" -+ -+namespace mozilla { -+namespace FilePreferences { -+ -+static bool sBlockUNCPaths = false; -+typedef nsTArray Paths; -+ -+static Paths& PathArray() -+{ -+ static Paths sPaths; -+ return sPaths; -+} -+ -+static void AllowDirectory(char const* directory) -+{ -+ nsCOMPtr file; -+ NS_GetSpecialDirectory(directory, getter_AddRefs(file)); -+ if (!file) { -+ return; -+ } -+ -+ nsString path; -+ if (NS_FAILED(file->GetTarget(path))) { -+ return; -+ } -+ -+ // The whitelist makes sense only for UNC paths, because this code is used -+ // to block only UNC paths, hence, no need to add non-UNC directories here -+ // as those would never pass the check. -+ if (!StringBeginsWith(path, NS_LITERAL_STRING("\\\\"))) { -+ return; -+ } -+ -+ if (!PathArray().Contains(path)) { -+ PathArray().AppendElement(path); -+ } -+} -+ -+void InitPrefs() -+{ -+ sBlockUNCPaths = Preferences::GetBool("network.file.disable_unc_paths", false); -+} -+ -+void InitDirectoriesWhitelist() -+{ -+ // NS_GRE_DIR is the installation path where the binary resides. -+ AllowDirectory(NS_GRE_DIR); -+ // NS_APP_USER_PROFILE_50_DIR and NS_APP_USER_PROFILE_LOCAL_50_DIR are the two -+ // parts of the profile we store permanent and local-specific data. -+ AllowDirectory(NS_APP_USER_PROFILE_50_DIR); -+ AllowDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR); -+} -+ -+namespace { // anon -+ -+class Normalizer -+{ -+public: -+ Normalizer(const nsAString& aFilePath, const char16_t aSeparator); -+ bool Get(nsAString& aNormalizedFilePath); -+ -+private: -+ bool ConsumeItem(); -+ bool ConsumeSeparator(); -+ bool IsEOF() { return mFilePathCursor == mFilePathEnd; } -+ -+ bool ConsumeName(); -+ bool CheckParentDir(); -+ bool CheckCurrentDir(); -+ -+ nsString::const_char_iterator mFilePathCursor; -+ nsString::const_char_iterator mFilePathEnd; -+ -+ nsDependentSubstring mItem; -+ char16_t const mSeparator; -+ nsTArray mStack; -+}; -+ -+Normalizer::Normalizer(const nsAString& aFilePath, const char16_t aSeparator) -+ : mFilePathCursor(aFilePath.BeginReading()) -+ , mFilePathEnd(aFilePath.EndReading()) -+ , mSeparator(aSeparator) -+{ -+} -+ -+bool Normalizer::ConsumeItem() -+{ -+ if (IsEOF()) { -+ return false; -+ } -+ -+ nsString::const_char_iterator nameBegin = mFilePathCursor; -+ while (mFilePathCursor != mFilePathEnd) { -+ if (*mFilePathCursor == mSeparator) { -+ break; // don't include the separator -+ } -+ ++mFilePathCursor; -+ } -+ -+ mItem.Rebind(nameBegin, mFilePathCursor); -+ return true; -+} -+ -+bool Normalizer::ConsumeSeparator() -+{ -+ if (IsEOF()) { -+ return false; -+ } -+ -+ if (*mFilePathCursor != mSeparator) { -+ return false; -+ } -+ -+ ++mFilePathCursor; -+ return true; -+} -+ -+bool Normalizer::Get(nsAString& aNormalizedFilePath) -+{ -+ aNormalizedFilePath.Truncate(); -+ -+ if (IsEOF()) { -+ return true; -+ } -+ if (ConsumeSeparator()) { -+ aNormalizedFilePath.Append(mSeparator); -+ } -+ -+ if (IsEOF()) { -+ return true; -+ } -+ if (ConsumeSeparator()) { -+ aNormalizedFilePath.Append(mSeparator); -+ } -+ -+ while (!IsEOF()) { -+ if (!ConsumeName()) { -+ return false; -+ } -+ } -+ -+ for (auto const& name : mStack) { -+ aNormalizedFilePath.Append(name); -+ } -+ -+ return true; -+} -+ -+bool Normalizer::ConsumeName() -+{ -+ if (!ConsumeItem()) { -+ return true; -+ } -+ -+ if (CheckCurrentDir()) { -+ return true; -+ } -+ -+ if (CheckParentDir()) { -+ if (!mStack.Length()) { -+ // This means there are more \.. than valid names -+ return false; -+ } -+ -+ mStack.RemoveElementAt(mStack.Length() - 1); -+ return true; -+ } -+ -+ if (mItem.IsEmpty()) { -+ // this means an empty name (a lone slash), which is illegal -+ return false; -+ } -+ -+ if (ConsumeSeparator()) { -+ mItem.Rebind(mItem.BeginReading(), mFilePathCursor); -+ } -+ mStack.AppendElement(mItem); -+ -+ return true; -+} -+ -+bool Normalizer::CheckCurrentDir() -+{ -+ if (mItem == NS_LITERAL_STRING(".")) { -+ ConsumeSeparator(); -+ // EOF is acceptable -+ return true; -+ } -+ -+ return false; -+} -+ -+bool Normalizer::CheckParentDir() -+{ -+ if (mItem == NS_LITERAL_STRING("..")) { -+ ConsumeSeparator(); -+ // EOF is acceptable -+ return true; -+ } -+ -+ return false; -+} -+ -+} // anon -+ -+bool IsBlockedUNCPath(const nsAString& aFilePath) -+{ -+ if (!sBlockUNCPaths) { -+ return false; -+ } -+ -+ if (!StringBeginsWith(aFilePath, NS_LITERAL_STRING("\\\\"))) { -+ return false; -+ } -+ -+ nsAutoString normalized; -+ if (!Normalizer(aFilePath, L'\\').Get(normalized)) { -+ // Broken paths are considered invalid and thus inaccessible -+ return true; -+ } -+ -+ for (const auto& allowedPrefix : PathArray()) { -+ if (StringBeginsWith(normalized, allowedPrefix)) { -+ if (normalized.Length() == allowedPrefix.Length()) { -+ return false; -+ } -+ if (normalized[allowedPrefix.Length()] == L'\\') { -+ return false; -+ } -+ -+ // When we are here, the path has a form "\\path\prefixevil" -+ // while we have an allowed prefix of "\\path\prefix". -+ // Note that we don't want to add a slash to the end of a prefix -+ // so that opening the directory (no slash at the end) still works. -+ break; -+ } -+ } -+ -+ return true; -+} -+ -+void testing::SetBlockUNCPaths(bool aBlock) -+{ -+ sBlockUNCPaths = aBlock; -+} -+ -+void testing::AddDirectoryToWhitelist(nsAString const & aPath) -+{ -+ PathArray().AppendElement(aPath); -+} -+ -+bool testing::NormalizePath(nsAString const & aPath, nsAString & aNormalized) -+{ -+ Normalizer normalizer(aPath, L'\\'); -+ return normalizer.Get(aNormalized); -+} -+ -+} // ::FilePreferences -+} // ::mozilla -diff --git a/xpcom/io/FilePreferences.h b/xpcom/io/FilePreferences.h -new file mode 100644 ---- /dev/null -+++ b/xpcom/io/FilePreferences.h -@@ -0,0 +1,25 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+* License, v. 2.0. If a copy of the MPL was not distributed with this -+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "nsIObserver.h" -+ -+namespace mozilla { -+namespace FilePreferences { -+ -+void InitPrefs(); -+void InitDirectoriesWhitelist(); -+bool IsBlockedUNCPath(const nsAString& aFilePath); -+ -+namespace testing { -+ -+void SetBlockUNCPaths(bool aBlock); -+void AddDirectoryToWhitelist(nsAString const& aPath); -+bool NormalizePath(nsAString const & aPath, nsAString & aNormalized); -+ -+} -+ -+} // FilePreferences -+} // mozilla -diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build ---- a/xpcom/io/moz.build -+++ b/xpcom/io/moz.build -@@ -79,24 +79,26 @@ EXPORTS += [ - 'nsUnicharInputStream.h', - 'nsWildCard.h', - 'SlicedInputStream.h', - 'SpecialSystemDirectory.h', - ] - - EXPORTS.mozilla += [ - 'Base64.h', -+ 'FilePreferences.h', - 'SnappyCompressOutputStream.h', - 'SnappyFrameUtils.h', - 'SnappyUncompressInputStream.h', - ] - - UNIFIED_SOURCES += [ - 'Base64.cpp', - 'crc32c.c', -+ 'FilePreferences.cpp', - 'nsAnonymousTemporaryFile.cpp', - 'nsAppFileLocationProvider.cpp', - 'nsBinaryStream.cpp', - 'nsDirectoryService.cpp', - 'nsEscape.cpp', - 'nsInputStreamTee.cpp', - 'nsIOUtil.cpp', - 'nsLinebreakConverter.cpp', -diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp ---- a/xpcom/io/nsLocalFileWin.cpp -+++ b/xpcom/io/nsLocalFileWin.cpp -@@ -41,16 +41,17 @@ - #include - #include - #include - - #include "nsXPIDLString.h" - #include "prproces.h" - #include "prlink.h" - -+#include "mozilla/FilePreferences.h" - #include "mozilla/Mutex.h" - #include "SpecialSystemDirectory.h" - - #include "nsTraceRefcnt.h" - #include "nsXPCOMCIDInternal.h" - #include "nsThreadUtils.h" - #include "nsXULAppAPI.h" - -@@ -1162,16 +1163,20 @@ nsLocalFile::InitWithPath(const nsAStrin - char16_t secondChar = *(++begin); - - // just do a sanity check. if it has any forward slashes, it is not a Native path - // on windows. Also, it must have a colon at after the first char. - if (FindCharInReadable(L'/', begin, end)) { - return NS_ERROR_FILE_UNRECOGNIZED_PATH; - } - -+ if (FilePreferences::IsBlockedUNCPath(aFilePath)) { -+ return NS_ERROR_FILE_ACCESS_DENIED; -+ } -+ - if (secondChar != L':' && (secondChar != L'\\' || firstChar != L'\\')) { - return NS_ERROR_FILE_UNRECOGNIZED_PATH; - } - - if (secondChar == L':') { - // Make sure we have a valid drive, later code assumes the drive letter - // is a single char a-z or A-Z. - if (PathGetDriveNumberW(aFilePath.Data()) == -1) { -@@ -1974,16 +1979,20 @@ nsLocalFile::CopySingleFile(nsIFile* aSo - bool path1Remote, path2Remote; - if (!IsRemoteFilePath(filePath.get(), path1Remote) || - !IsRemoteFilePath(destPath.get(), path2Remote) || - path1Remote || path2Remote) { - dwCopyFlags |= COPY_FILE_NO_BUFFERING; - } - } - -+ if (FilePreferences::IsBlockedUNCPath(destPath)) { -+ return NS_ERROR_FILE_ACCESS_DENIED; -+ } -+ - if (!move) { - copyOK = ::CopyFileExW(filePath.get(), destPath.get(), nullptr, - nullptr, nullptr, dwCopyFlags); - } else { - copyOK = ::MoveFileExW(filePath.get(), destPath.get(), - MOVEFILE_REPLACE_EXISTING); - - // Check if copying the source file to a different volume, -diff --git a/xpcom/tests/gtest/TestFilePreferencesWin.cpp b/xpcom/tests/gtest/TestFilePreferencesWin.cpp -new file mode 100644 ---- /dev/null -+++ b/xpcom/tests/gtest/TestFilePreferencesWin.cpp -@@ -0,0 +1,141 @@ -+#include "gtest/gtest.h" -+ -+#include "mozilla/FilePreferences.h" -+#include "nsIFile.h" -+#include "nsXPCOMCID.h" -+ -+TEST(FilePreferencesWin, Normalization) -+{ -+ nsAutoString normalized; -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("foo\\some"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo\\some")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\..\\bar\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\..\\bar"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\bar")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\..\\.\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ bool result; -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.."), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\\\bar"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\..\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\..\\\\"), normalized); -+ ASSERT_FALSE(result); -+} -+ -+TEST(FilePreferencesWin, AccessUNC) -+{ -+ nsCOMPtr lf = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID); -+ -+ nsresult rv; -+ -+ mozilla::FilePreferences::testing::SetBlockUNCPaths(false); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_OK); -+ -+ mozilla::FilePreferences::testing::SetBlockUNCPaths(true); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED); -+ -+ mozilla::FilePreferences::testing::AddDirectoryToWhitelist(NS_LITERAL_STRING("\\\\nice")); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\share")); -+ ASSERT_EQ(rv, NS_OK); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED); -+} -diff --git a/xpcom/tests/gtest/moz.build b/xpcom/tests/gtest/moz.build ---- a/xpcom/tests/gtest/moz.build -+++ b/xpcom/tests/gtest/moz.build -@@ -51,16 +51,21 @@ UNIFIED_SOURCES += [ - if CONFIG['MOZ_DEBUG'] and CONFIG['OS_ARCH'] not in ('WINNT') and CONFIG['OS_TARGET'] != 'Android': - # FIXME bug 523392: TestDeadlockDetector doesn't like Windows - # Bug 1054249: Doesn't work on Android - UNIFIED_SOURCES += [ - 'TestDeadlockDetector.cpp', - 'TestDeadlockDetectorScalability.cpp', - ] - -+if CONFIG['OS_TARGET'] == 'WINNT': -+ UNIFIED_SOURCES += [ -+ 'TestFilePreferencesWin.cpp', -+ ] -+ - if CONFIG['WRAP_STL_INCLUDES'] and not CONFIG['CLANG_CL']: - UNIFIED_SOURCES += [ - 'TestSTLWrappers.cpp', - ] - - # Compile TestAllocReplacement separately so Windows headers don't pollute - # the global namespace for other files. - SOURCES += [ - -- cgit v1.2.3 From 05fb1e0017030f1c0cbc7e9a1adeccca57ef1d9d Mon Sep 17 00:00:00 2001 From: Ben Woodcroft Date: Sat, 22 Sep 2018 08:19:09 +1000 Subject: gnu: hmmer: Update to 3.2.1. * gnu/packages/bioinformatics.scm (hmmer): Update to 3.2.1. [origin]: Remove patch. [license]: Change to BSD-3. [supported-systems]: New field. * gnu/packages/patches/hmmer-remove-cpu-specificity.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - gnu/packages/bioinformatics.scm | 19 +++++++------------ .../patches/hmmer-remove-cpu-specificity.patch | 22 ---------------------- 3 files changed, 7 insertions(+), 35 deletions(-) delete mode 100644 gnu/packages/patches/hmmer-remove-cpu-specificity.patch (limited to 'gnu/packages/patches') diff --git a/gnu/local.mk b/gnu/local.mk index 4097ad5fcd..daf96ea4b6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -805,7 +805,6 @@ dist_patch_DATA = \ %D%/packages/patches/hdf-eos5-remove-gctp.patch \ %D%/packages/patches/hdf-eos5-fix-szip.patch \ %D%/packages/patches/hdf-eos5-fortrantests.patch \ - %D%/packages/patches/hmmer-remove-cpu-specificity.patch \ %D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 9599e3096f..b619866ba3 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2936,18 +2936,15 @@ indexing scheme is called a @dfn{Hierarchical Graph FM index} (HGFM).") (define-public hmmer (package (name "hmmer") - (version "3.1b2") + (version "3.2.1") (source (origin (method url-fetch) (uri (string-append - "http://eddylab.org/software/hmmer" - (version-major version) "/" - version "/hmmer-" version ".tar.gz")) + "http://eddylab.org/software/hmmer/hmmer-" version ".tar.gz")) (sha256 (base32 - "0djmgc0pfli0jilfx8hql1axhwhqxqb8rxg2r5rg07aw73sfs5nx")) - (patches (search-patches "hmmer-remove-cpu-specificity.patch")))) + "171bivy6xhgjsz5nv53n81pc3frnwz29ylblawk2bv46szwjjqd5")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (home-page "http://hmmer.org/") @@ -2957,12 +2954,10 @@ indexing scheme is called a @dfn{Hierarchical Graph FM index} (HGFM).") sequences, and for making protein sequence alignments. It implements methods using probabilistic models called profile hidden Markov models (profile HMMs).") - (license (list license:gpl3+ - ;; The bundled library 'easel' is distributed - ;; under The Janelia Farm Software License. - (license:non-copyleft - "file://easel/LICENSE" - "See easel/LICENSE in the distribution."))))) + ;; hmmer uses non-portable SSE intrinsics so building fails on other + ;; platforms. + (supported-systems '("x86_64-linux" "i686-linux")) + (license license:bsd-3))) (define-public htseq (package diff --git a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch b/gnu/packages/patches/hmmer-remove-cpu-specificity.patch deleted file mode 100644 index ba98db4d0e..0000000000 --- a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch +++ /dev/null @@ -1,22 +0,0 @@ -This patch removes compilation flags which make the build for the machine -where compilation takes place, rendering the build not reproducible. - -diff --git a/configure b/configure -index 8b6aaef..49a6afc 100755 ---- a/configure -+++ b/configure -@@ -6125,14 +6125,6 @@ fi # guess arch - - if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then - for arch in $ax_gcc_arch; do -- if test "x$acx_maxopt_portable" = xyes; then # if we require portable code -- flags="-mtune=$arch" -- # -mcpu=$arch and m$arch generate nonportable code on every arch except -- # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. -- case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac -- else -- flags="-march=$arch -mcpu=$arch -m$arch" -- fi - for flag in $flags; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -- cgit v1.2.3 From ae71cd8ac93245360ffe73d6ab260975ec0d742f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 22 Sep 2018 04:47:54 -0400 Subject: gnu: icecat: Add fixes from upstream mozilla-esr60 [security fixes]. Includes fixes for CVE-2018-12383 and CVE-2018-12385. * gnu/packages/patches/icecat-CVE-2018-12383.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/patches/icecat-avoid-bundled-libraries.patch: Adapt to apply cleanly to IceCat 60. * gnu/packages/gnuzilla.scm (mozilla-patch): Update to fetch from mozilla-esr60. (icecat): Add selected changesets from upstream mozilla-esr60. --- gnu/local.mk | 1 + gnu/packages/gnuzilla.scm | 8 +- gnu/packages/patches/icecat-CVE-2018-12383.patch | 103 +++++++++++++++++++++ .../patches/icecat-avoid-bundled-libraries.patch | 20 ++-- 4 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 gnu/packages/patches/icecat-CVE-2018-12383.patch (limited to 'gnu/packages/patches') diff --git a/gnu/local.mk b/gnu/local.mk index daf96ea4b6..fe2b573dd5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -810,6 +810,7 @@ dist_patch_DATA = \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ + %D%/packages/patches/icecat-CVE-2018-12383.patch \ %D%/packages/patches/icecat-use-system-graphite2.patch \ %D%/packages/patches/icecat-use-system-harfbuzz.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index db8f85cfb1..653cee93d5 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -469,10 +469,10 @@ security standards.") (license license:mpl2.0))) (define (mozilla-patch file-name changeset hash) - "Return an origin for CHANGESET from the mozilla-esr52 repository." + "Return an origin for CHANGESET from the mozilla-esr60 repository." (origin (method url-fetch) - (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr52/raw-rev/" + (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr60/raw-rev/" changeset)) (sha256 (base32 hash)) (file-name file-name))) @@ -498,7 +498,9 @@ security standards.") (search-patch "icecat-avoid-bundled-libraries.patch") ;; FIXME (search-patch "icecat-use-system-harfbuzz.patch") ;; FIXME (search-patch "icecat-use-system-graphite2.patch") - )) + (mozilla-patch "icecat-CVE-2018-12385.patch" "80a4a7ef2813" "1vgcbimpnfjqj934v0cryq1g13xac3wfmd4jyhcb5s60x8xyssf5") + (search-patch "icecat-CVE-2018-12383.patch") + (mozilla-patch "icecat-bug-1489744.patch" "6546ee839d30" "11mhvj77r789b428bfxqq5wdx8yr7lbrdjzr8qjj6fw197pldn51"))) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/patches/icecat-CVE-2018-12383.patch b/gnu/packages/patches/icecat-CVE-2018-12383.patch new file mode 100644 index 0000000000..17ca0f3773 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2018-12383.patch @@ -0,0 +1,103 @@ +Based on upstream changeset: + https://hg.mozilla.org/releases/mozilla-esr60/rev/300efdbc9fe1 +but with the git binary patch and related test changes omitted, +and adapted to apply cleanly to GNU IceCat. + +# HG changeset patch +# User David Keeler +# Date 1531860660 25200 +# Node ID 300efdbc9fe1f9165428c7934861033935b5abfa +# Parent 80a4a7ef281374dbb2afda8edac54665b14b9ef8 +Bug 1475775 - Clean up old NSS DB file after upgrade if necessary. r=franziskus, r=mattn, a=RyanVM + +Reviewers: franziskus, mattn + +Bug #: 1475775 + +Differential Revision: https://phabricator.services.mozilla.com/D2202 + +diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp +--- a/security/manager/ssl/nsNSSComponent.cpp ++++ b/security/manager/ssl/nsNSSComponent.cpp +@@ -1935,16 +1935,61 @@ AttemptToRenameBothPKCS11ModuleDBVersion + NS_NAMED_LITERAL_CSTRING(sqlModuleDBFilename, "pkcs11.txt"); + nsresult rv = AttemptToRenamePKCS11ModuleDB(profilePath, + legacyModuleDBFilename); + if (NS_FAILED(rv)) { + return rv; + } + return AttemptToRenamePKCS11ModuleDB(profilePath, sqlModuleDBFilename); + } ++ ++// When we changed from the old dbm database format to the newer sqlite ++// implementation, the upgrade process left behind the existing files. Suppose a ++// user had not set a password for the old key3.db (which is about 99% of ++// users). After upgrading, both the old database and the new database are ++// unprotected. If the user then sets a password for the new database, the old ++// one will not be protected. In this scenario, we should probably just remove ++// the old database (it would only be relevant if the user downgraded to a ++// version of IceCat before 58, but we have to trade this off against the ++// user's old private keys being unexpectedly unprotected after setting a ++// password). ++// This was never an issue on Android because we always used the new ++// implementation. ++static void ++MaybeCleanUpOldNSSFiles(const nsACString& profilePath) ++{ ++ UniquePK11SlotInfo slot(PK11_GetInternalKeySlot()); ++ if (!slot) { ++ return; ++ } ++ // Unfortunately we can't now tell the difference between "there already was a ++ // password when the upgrade happened" and "there was not a password but then ++ // the user added one after upgrading". ++ bool hasPassword = PK11_NeedLogin(slot.get()) && ++ !PK11_NeedUserInit(slot.get()); ++ if (!hasPassword) { ++ return; ++ } ++ nsCOMPtr dbFile = do_CreateInstance("@mozilla.org/file/local;1"); ++ if (!dbFile) { ++ return; ++ } ++ nsresult rv = dbFile->InitWithNativePath(profilePath); ++ if (NS_FAILED(rv)) { ++ return; ++ } ++ NS_NAMED_LITERAL_CSTRING(keyDBFilename, "key3.db"); ++ rv = dbFile->AppendNative(keyDBFilename); ++ if (NS_FAILED(rv)) { ++ return; ++ } ++ // Since this isn't a directory, the `recursive` argument to `Remove` is ++ // irrelevant. ++ Unused << dbFile->Remove(false); ++} + #endif // ifndef ANDROID + + // Given a profile directory, attempt to initialize NSS. If nocertdb is true, + // (or if we don't have a profile directory) simply initialize NSS in no DB mode + // and return. Otherwise, first attempt to initialize in read/write mode, and + // then read-only mode if that fails. If both attempts fail, we may be failing + // to initialize an NSS DB collection that has FIPS mode enabled. Attempt to + // ascertain if this is the case, and if so, rename the offending PKCS#11 module +@@ -1966,16 +2011,19 @@ InitializeNSSWithFallbacks(const nsACStr + + // Try read/write mode. If we're in safeMode, we won't load PKCS#11 modules. + #ifndef ANDROID + PRErrorCode savedPRErrorCode1; + #endif // ifndef ANDROID + SECStatus srv = ::mozilla::psm::InitializeNSS(profilePath, false, !safeMode); + if (srv == SECSuccess) { + MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("initialized NSS in r/w mode")); ++#ifndef ANDROID ++ MaybeCleanUpOldNSSFiles(profilePath); ++#endif // ifndef ANDROID + return NS_OK; + } + #ifndef ANDROID + savedPRErrorCode1 = PR_GetError(); + PRErrorCode savedPRErrorCode2; + #endif // ifndef ANDROID + // That failed. Try read-only mode. + srv = ::mozilla::psm::InitializeNSS(profilePath, true, !safeMode); diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch index 114631517a..b5e9fb887e 100644 --- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch +++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch @@ -1,8 +1,8 @@ Fixes needed when avoiding bundled libraries. ---- icecat-52.0.2/xpcom/build/moz.build.orig -+++ icecat-52.0.2/xpcom/build/moz.build -@@ -93,10 +93,5 @@ +--- icecat-60.2.0/xpcom/build/moz.build.orig 2018-09-13 17:46:49.000000000 -0400 ++++ icecat-60.2.0/xpcom/build/moz.build 2018-09-22 04:26:50.659564554 -0400 +@@ -99,10 +99,5 @@ '/docshell/base', ] @@ -13,9 +13,9 @@ Fixes needed when avoiding bundled libraries. - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': CXXFLAGS += CONFIG['TK_CFLAGS'] ---- icecat-52.0.2/storage/moz.build.orig -+++ icecat-52.0.2/storage/moz.build -@@ -114,7 +114,6 @@ +--- icecat-60.2.0/storage/moz.build.orig 2018-09-13 17:51:11.000000000 -0400 ++++ icecat-60.2.0/storage/moz.build 2018-09-22 04:26:50.659564554 -0400 +@@ -117,7 +117,6 @@ DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True LOCAL_INCLUDES += [ @@ -23,13 +23,13 @@ Fixes needed when avoiding bundled libraries. '/dom/base', ] ---- icecat-52.0.2/dom/indexedDB/moz.build.orig -+++ icecat-52.0.2/dom/indexedDB/moz.build -@@ -101,7 +101,6 @@ +--- icecat-60.2.0/dom/indexedDB/moz.build.orig 2018-09-13 17:49:42.000000000 -0400 ++++ icecat-60.2.0/dom/indexedDB/moz.build 2018-09-22 04:26:50.663564574 -0400 +@@ -102,7 +102,6 @@ CXXFLAGS += ['-Wno-error=shadow'] LOCAL_INCLUDES += [ - '/db/sqlite3/src', '/dom/base', '/dom/storage', - '/dom/workers', + '/ipc/glue', -- cgit v1.2.3