diff options
author | Marius Bakke <mbakke@fastmail.com> | 2018-09-26 01:11:32 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2018-09-26 01:11:32 +0200 |
commit | 6a0427af6cc3d52c0efc09262e90c1858ae6f40e (patch) | |
tree | afedf3a5728dfac46c20aed448326debccf96562 /gnu/packages/patches | |
parent | 985d542e028517b2888fa61831233a2b60dc7d48 (diff) | |
parent | 3b97a1779f3b65d582b8edc8c154b6414314b946 (diff) | |
download | guix-6a0427af6cc3d52c0efc09262e90c1858ae6f40e.tar guix-6a0427af6cc3d52c0efc09262e90c1858ae6f40e.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/hmmer-remove-cpu-specificity.patch | 22 | ||||
-rw-r--r-- | gnu/packages/patches/icecat-CVE-2018-12383.patch | 103 | ||||
-rw-r--r-- | gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch | 441 | ||||
-rw-r--r-- | gnu/packages/patches/icecat-avoid-bundled-libraries.patch | 20 | ||||
-rw-r--r-- | gnu/packages/patches/icecat-bug-1413868-pt1.patch | 663 | ||||
-rw-r--r-- | gnu/packages/patches/libvpx-use-after-free-in-postproc.patch | 34 | ||||
-rw-r--r-- | gnu/packages/patches/rsem-makefile.patch | 682 |
7 files changed, 147 insertions, 1818 deletions
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 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 <dkeeler@mozilla.com> +# 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<nsIFile> 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-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 <https://hg.mozilla.org/releases/mozilla-esr52/rev/608e76ec5ba2> -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Ryan VanderMeulen <ryanvm@gmail.com> -# 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-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', 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 <https://hg.mozilla.org/releases/mozilla-esr52/rev/431fa5dd4016> -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Honza Bambas <honzab.moz@firemni.cz> -# 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<nsString> Paths; -+ -+static Paths& PathArray() -+{ -+ static Paths sPaths; -+ return sPaths; -+} -+ -+static void AllowDirectory(char const* directory) -+{ -+ nsCOMPtr<nsIFile> 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<nsDependentSubstring> 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 <stdio.h> - #include <stdlib.h> - #include <mbstring.h> - - #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<nsIFile> 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 += [ - 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 <jianj@google.com> +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/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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 <ricardo.wurmus@mdc-berlin.de> -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 - |