commit MozillaFirefox.17096 for openSUSE:Leap:15.2:Update
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package MozillaFirefox.17096 for openSUSE:Leap:15.2:Update checked in at 2021-11-02 10:24:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2:Update/MozillaFirefox.17096 (Old) and /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.17096.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "MozillaFirefox.17096" Tue Nov 2 10:24:49 2021 rev:1 rq:928252 version:91.2.0 Changes: -------- New Changes file: --- /dev/null 2021-10-14 08:13:55.193858881 +0200 +++ /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.17096.new.1890/MozillaFirefox.changes 2021-11-02 10:24:49.608500202 +0100 @@ -0,0 +1,7320 @@ +------------------------------------------------------------------- +Wed Oct 20 06:59:40 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Rebase mozilla-sandbox-fips.patch to punch another hole in the + sandbox containment, to be able to open /proc/sys/crypto/fips_enabled + from within the newly introduced socket process sandbox. + This fixes bsc#1191815 and bsc#1190141 +- Add a way to let users overwrite MOZ_ENABLE_WAYLAND +- Rename mozilla-neqo-fix-fips-crash.patch to mozilla-bmo1735309.patch + and rebase to the official upstream patch + +------------------------------------------------------------------- +Tue Oct 5 12:47:06 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 91.2.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2021-45 (bsc#1191332) + * CVE-2021-38496 (bmo#1725335) + Use-after-free in MessageTask + * CVE-2021-38497 (bmo#1726621) + Validation message could have been overlaid on another origin + * CVE-2021-38498 (bmo#1729642) + Use-after-free of nsLanguageAtomService object + * CVE-2021-32810 (bmo#1729813, + https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj...) + Data race in crossbeam-deque + * CVE-2021-38500 (bmo#1725854, bmo#1728321) + Memory safety bugs fixed in Firefox 93, Firefox ESR 78.15, + and Firefox ESR 91.2 + * CVE-2021-38501 (bmo#1685354, bmo#1715755, bmo#1723176) + Memory safety bugs fixed in Firefox 93 and Firefox ESR 91.2 + +------------------------------------------------------------------- +Fri Oct 1 09:28:03 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Add mozilla-neqo-fix-fips-crash.patch to fix crash in FIPS mode + (bsc#1190710) + +------------------------------------------------------------------- +Thu Sep 9 23:27:28 UTC 2021 - Charles Robertson <cgrobertson@suse.com> + +- Added firefox-i586-conflict-typedef-error.patch + to fix 32bit i586 compile error + +------------------------------------------------------------------- +Wed Sep 8 17:17:15 UTC 2021 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 91.1.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2021-40 (bsc#1190269, bsc#1190274) + * CVE-2021-38492 (bmo#1721107) + Navigating to `mk:` URL scheme could load Internet Explorer + * CVE-2021-38495 (bmo#1723391, bmo#1723920, bmo#1724101, + bmo#1724107) + Memory safety bugs fixed in Firefox 92 and Firefox ESR 91.1 +- Removed mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch + made obsolete by upstream changes. +- Rebased patches: + firefox-branded-icons.patch + firefox-kde.patch + mozilla-aarch64-startup-crash.patch + mozilla-bmo1504834-part1.patch + mozilla-bmo1504834-part4.patch + mozilla-bmo1512162.patch + mozilla-bmo1626236.patch + mozilla-bmo849632.patch + mozilla-kde.patch + mozilla-ntlm-full-path.patch + mozilla-s390-context.patch + mozilla-sandbox-fips.patch + +------------------------------------------------------------------- +Wed Aug 18 06:47:31 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox 91.0.1esr ESR + * Fixed: Fixed an issue causing buttons on the tab bar to be + resized when loading certain websites (bug 1704404) + (bmo#1704404) + * Fixed: Fixed an issue which caused tabs from private windows + to be visible in non-private windows when viewing switch-to- + tab results in the address bar panel (bug 1720369) + (bmo#1720369) + * Fixed: Various stability fixes + * Fixed: Security fix + MFSA 2021-37 (bsc#1189547) + * CVE-2021-29991 (bmo#1724896) + Header Splitting possible with HTTP/3 Responses +- Re-add mozilla-silence-no-return-type.patch + +------------------------------------------------------------------- +Wed Aug 11 02:31:55 UTC 2021 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 91.0 ESR + * New: Some of the highlights of the new Extended Support + Release are: + - A number of user interface changes. For more information, + see the Firefox 89 release notes. + - Firefox now supports logging into Microsoft, work, and + school accounts using Windows single sign-on. Learn more + - On Windows, updates can now be applied in the background + while Firefox is not running. + - Firefox for Windows now offers a new page about:third-party + to help identify compatibility issues caused by third-party + applications + - Version 2 of Firefox's SmartBlock feature further improves + private browsing. Third party Facebook scripts are blocked to + prevent you from being tracked, but are now automatically + loaded "just in time" if you decide to "Log in with Facebook" + on any website. + - Enhanced the privacy of the Firefox Browser's Private + Browsing mode with Total Cookie Protection, which confines + cookies to the site where they were created, preventing + companis from using cookies to track your browsing across + sites. This feature was originally launched in Firefox's ETP + Strict mode. + - PDF forms now support JavaScript embedded in PDF files. + Some PDF forms use JavaScript for validation and other + interactive features. + - You'll encounter less website breakage in Private Browsing + and Strict Enhanced Tracking Protection with SmartBlock, + which provides stand-in scripts so that websites load + properly. + - Improved Print functionality with a cleaner design and + better integration with your computer's printer settings. + - Firefox now protects you from supercookies, a type of + tracker that can stay hidden in your browser and track you + online, even after you clear cookies. By isolating + supercookies, Firefox prevents them from tracking your web + browsing from one site to the next. + - Firefox now remembers your preferred location for saved + bookmarks, displays the bookmarks toolbar by default on new + tabs, and gives you easy access to all of your bookmarks via + a toolbar folder. + - Native support for macOS devices built with Apple Silicon + CPUs brings dramatic performance improvements over the non- + native build that was shipped in Firefox 83: Firefox launches + over 2.5 times faster and web apps are now twice as + responsive (per the SpeedoMeter 2.0 test). If you are on a + new Apple device, follow these steps to upgrade to the latest + Firefox. + - Pinch zooming will now be supported for our users with + Windows touchscreen devices and touchpads on Mac devices. + Firefox users may now use pinch to zoom on touch-capable + devices to zoom in and out of webpages. + - We���ve improved functionality and design for a number of + Firefox search features: + * Selecting a search engine at the bottom of the search + panel now enters search mode for that engine, allowing you to + see suggestions (if available) for your search terms. The old + behavior (immediately performing a search) is available with + a shift-click. + * When Firefox autocompletes the URL of one of your search + engines, you can now search with that engine directly in the + address bar by selecting the shortcut in the address bar + results. + * We���ve added buttons at the bottom of the search panel to + allow you to search your bookmarks, open tabs, and history. + - Firefox supports AcroForm, which will allow you to fill in, + print, and save supported PDF forms and the PDF viewer also + has a new fresh look. + - For our users in the US and Canada, Firefox can now save, + manage, and auto-fill credit card information for you, making + shopping on Firefox ever more convenient. + - In addition to our default, dark and light themes, with + this release, Firefox introduces the Alpenglow theme: a + colorful appearance for buttons, menus, and windows. You can + update your Firefox themes under settings or preferences. + * Changed: Firefox no longer supports Adobe Flash. There is no + setting available to re-enable Flash support. + * Enterprise: Various bug fixes and new policies have been + implemented in the latest version of Firefox. See more + details in the Firefox for Enterprise 91 Release Notes. + MFSA 2021-33 (bsc#1188891) + * CVE-2021-29986 (bmo#1696138) + Race condition when resolving DNS names could have led to + memory corruption + * CVE-2021-29981 (bmo#1707774) + Live range splitting could have led to conflicting + assignments in the JIT + * CVE-2021-29988 (bmo#1717922) + Memory corruption as a result of incorrect style treatment + * CVE-2021-29983 (bmo#1719088) + Firefox for Android could get stuck in fullscreen mode + * CVE-2021-29984 (bmo#1720031) + Incorrect instruction reordering during JIT optimization + * CVE-2021-29980 (bmo#1722204) + Uninitialized memory in a canvas object could have led to + memory corruption + * CVE-2021-29987 (bmo#1716129) + Users could have been tricked into accepting unwanted + permissions on Linux + * CVE-2021-29985 (bmo#1722083) + Use-after-free media channels + * CVE-2021-29982 (bmo#1715318) + Single bit data leak due to incorrect JIT optimization and + type confusion + * CVE-2021-29989 (bmo#1662676, bmo#1666184, bmo#1719178, ++++ 7123 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.17096.new.1890/MozillaFirefox.changes New: ---- MozillaFirefox-rpmlintrc MozillaFirefox.changes MozillaFirefox.desktop MozillaFirefox.spec _constraints create-tar.sh firefox-91.2.0esr.source.tar.xz firefox-91.2.0esr.source.tar.xz.asc firefox-appdata.xml firefox-branded-icons.patch firefox-i586-conflict-typedef-error.patch firefox-kde.patch firefox-mimeinfo.xml firefox-search-provider.ini firefox.1 firefox.js google-api-key l10n-91.2.0esr.tar.xz mozilla-aarch64-startup-crash.patch mozilla-api-key mozilla-bmo1005535.patch mozilla-bmo1504834-part1.patch mozilla-bmo1504834-part2.patch mozilla-bmo1504834-part3.patch mozilla-bmo1504834-part4.patch mozilla-bmo1512162.patch mozilla-bmo1568145.patch mozilla-bmo1602730.patch mozilla-bmo1626236.patch mozilla-bmo1735309.patch mozilla-bmo849632.patch mozilla-bmo998749.patch mozilla-fix-aarch64-libopus.patch mozilla-fix-top-level-asm.patch mozilla-get-app-id mozilla-kde.patch mozilla-libavcodec58_91.patch mozilla-nongnome-proxies.patch mozilla-ntlm-full-path.patch mozilla-pgo.patch mozilla-reduce-rust-debuginfo.patch mozilla-s390-context.patch mozilla-s390x-skia-gradient.patch mozilla-sandbox-fips.patch mozilla-silence-no-return-type.patch mozilla.keyring mozilla.sh.in spellcheck.js tar_stamps ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ MozillaFirefox.spec ++++++ ++++ 812 lines (skipped) ++++++ MozillaFirefox-rpmlintrc ++++++ addFilter("no-jar-manifest") ++++++ MozillaFirefox.desktop ++++++ [Desktop Entry] Encoding=UTF-8 Name=%NAME GenericName=Web Browser Comment=Web Browser TryExec=%EXEC Exec=%EXEC %u Icon=%ICON Terminal=false StartupNotify=true MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; Type=Application Actions=new-window;PrivateBrowsing;ProfileManager [Desktop Action new-window] Name=New Window Exec=%EXEC --new-window %u [Desktop Action PrivateBrowsing] Name=New Private Browsing Window Exec=%EXEC --private-window %u [Desktop Action ProfileManager] Name=Profile Manager Exec=%EXEC --ProfileManager ++++++ _constraints ++++++ <?xml version="1.0" encoding="UTF-8"?> <constraints> <hardware> <disk> <size unit="G">25</size> </disk> <memory> <size unit="G">16</size> </memory> </hardware> <overwrite> <conditions> <arch>armv6l</arch> <arch>armv7l</arch> </conditions> <hardware> <disk> <size unit="G">12</size> </disk> <memory> <size unit="G">5</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>aarch64</arch> </conditions> <hardware> <memory> <size unit="G">12</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>x86_64</arch> </conditions> <hardware> <memory> <size unit="G">26</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>ppc64le</arch> </conditions> <hardware> <memory> <size unit="G">12</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>s390x</arch> </conditions> <hardware> <memory> <size unit="G">14</size> </memory> </hardware> </overwrite> </constraints> ++++++ create-tar.sh ++++++ #!/bin/bash function print_usage_and_exit() { echo "Usage: create-tar.sh tar_stamps" echo "" echo "Where tar_stamps should look like this:" echo "" cat << EOF # Node ID: 64ee63facd4ff96b3e8590cff559d7e97ac6b061 PRODUCT="firefox" # "firefox" or "thunderbird" CHANNEL="esr60" VERSION="60.7.0" VERSION_SUFFIX="esr" RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation) PREV_VERSION_SUFFIX="esr" #SKIP_LOCALES="" # Uncomment to skip l10n-generation EOF exit 1 } if [ $# -ne 1 ]; then print_usage_and_exit fi # Sourcing the given tar_stamps-file to have the variables available TAR_STAMP="$1" source "$TAR_STAMP" || print_usage_and_exit # Internal variables BRANCH="releases/mozilla-$CHANNEL" if [ "$PRODUCT" = "firefox" ]; then LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json" else LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json" fi SOURCE_TARBALL="$PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz" FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source" FTP_CANDIDATES_BASE_URL="https://ftp.mozilla.org/pub/$PRODUCT/candidates" # Make first letter of PRODCUT upper case PRODUCT_CAP="${PRODUCT^}" LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP" PRODUCT_URL="https://product-details.mozilla.org/1.0/$PRODUCT.json" # Exit script on CTRL+C trap "exit" INT function get_ftp_candidates_url() { VERSION_WITH_SUFFIX="$1" echo "$FTP_CANDIDATES_BASE_URL/$VERSION_WITH_SUFFIX-candidates" } function check_tarball_source () { TARBALL=$1 # Print out what is going to be done: if [ -e $TARBALL ]; then echo "Reuse existing file" elif wget --spider $FTP_URL/$TARBALL 2> /dev/null; then echo "Download file" else echo "Mercurial checkout" fi } function ask_cont_abort_question() { while true; do read -p "$1 [(c)ontinue/(a)bort] " ca case $ca in [Cc]* ) return 0 ;; [Aa]* ) return 1 ;; * ) echo "Please answer c or a.";; esac done } function check_for_binary() { if ! test -x $1; then echo "$1 is missing: execute zypper in $2" exit 5 fi } function get_source_stamp() { BUILD_ID="$1" FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION$VERSION_SUFFIX) FTP_CANDIDATES_JSON_SUFFIX="${BUILD_ID}/linux-x86_64/en-US/$PRODUCT-$VERSION$VERSION_SUFFIX.json" BUILD_JSON=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/$FTP_CANDIDATES_JSON_SUFFIX") || return 1; REV=$(echo "$BUILD_JSON" | jq .moz_source_stamp) SOURCE_REPO=$(echo "$BUILD_JSON" | jq .moz_source_repo) TIMESTAMP=$(echo "$BUILD_JSON" | jq .buildid) echo "Extending $TAR_STAMP with:" echo "RELEASE_REPO=${SOURCE_REPO}" echo "RELEASE_TAG=${REV}" echo "RELEASE_TIMESTAMP=${TIMESTAMP}" # We "remove and add" instead of "replace" in case the entries are not there yet # Removing the old RELEASE_-tags sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP" # Appending the new echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP" echo "RELEASE_TAG=$REV" >> "$TAR_STAMP" echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP" } function get_build_number() { LAST_FOUND="" VERSION_WITH_SUFFIX="$1" BUILD_ID=$(curl --silent "$PRODUCT_URL" | jq -e '.["releases"] | .["'$PRODUCT-$VERSION_WITH_SUFFIX'"] | .["build_number"]') # Slow fall-back if [ $? -ne 0 ]; then echo "Build number not found in product URL, falling back to slow FTP-parsing." 1>&2 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION_WITH_SUFFIX) # Unfortunately, locales-files are not associated to releases, but to builds. # And since we don't know which build was the final build, we grep them all from # the candidates-page, sort them and take the last one which should be the oldest # Error only if not even the first one exists LAST_FOUND=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/" | grep -o "build[0-9]*/" | sort | uniq | tail -n 1 | cut -d "/" -f 1) else LAST_FOUND="build$BUILD_ID" fi if [ "$LAST_FOUND" != "" ]; then echo "$LAST_FOUND" return 0 else echo "Error: Could not find build-number for Firefox $VERSION_WITH_SUFFIX !" 1>&2 return 1 fi } function locales_get() { TMP_VERSION="$1" BUILD_ID="$2" URL_TO_CHECK="${LOCALES_URL}-${TMP_VERSION}" FINAL_URL="${URL_TO_CHECK}-${BUILD_ID}.json" if wget --quiet --spider "$FINAL_URL"; then echo "$FINAL_URL" return 0 else echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2 return 1 fi } function locales_parse() { URL="$1" curl -s "$URL" | python -c "import json; import sys; \ print('\n'.join(['{} {}'.format(key, value['changeset']) \ for key, value in sorted(json.load(sys.stdin)['locales'].items())]));" } function locales_unchanged() { BUILD_ID="$1" PREV_BUILD_ID=$(get_build_number "$PREV_VERSION$PREV_VERSION_SUFFIX") # If no json-file for one of the versions can be found, we say "they changed" prev_url=$(locales_get "$PREV_VERSION$PREV_VERSION_SUFFIX" "$PREV_BUILD_ID") || return 1 curr_url=$(locales_get "$VERSION$VERSION_SUFFIX" "$BUILD_ID") || return 1 prev_content=$(locales_parse "$prev_url") || exit 1 curr_content=$(locales_parse "$curr_url") || exit 1 diff -y --suppress-common-lines -d <(echo "$prev_content") <(echo "$curr_content") } # check required tools check_for_binary /usr/bin/hg "mercurial" check_for_binary /usr/bin/jq "jq" which python > /dev/null || exit 1 # use parallel compression, if available compression='-J' pixz -h > /dev/null 2>&1 if (($? != 127)); then compression='-Ipixz' fi # Get ID BUILD_ID=$(get_build_number "$VERSION$VERSION_SUFFIX") if [ -z ${SKIP_LOCALES+x} ]; then if [ "$PREV_VERSION" != "" ] && locales_unchanged "$BUILD_ID"; then printf "%-40s: Did not change. Skipping.\n" "locales" LOCALES_CHANGED=0 else printf "%-40s: Need to download.\n" "locales" LOCALES_CHANGED=1 fi else printf "%-40s: User forced skip (SKIP_LOCALES set)\n" "locales" fi # Check what is going to be done and ask for consent for ff in $SOURCE_TARBALL $SOURCE_TARBALL.asc; do printf "%-40s: %s\n" $ff "$(check_tarball_source $ff)" done $(ask_cont_abort_question "Is this ok?") || exit 0 # Try to download tar-ball from officiall mozilla-mirror if [ ! -e $SOURCE_TARBALL ]; then wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source... fi # including signature if [ ! -e $SOURCE_TARBALL.asc ]; then wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source... fi # we might have an upstream archive already and can skip the checkout if [ -e $SOURCE_TARBALL ]; then if [ -z ${SKIP_LOCALES+x} ] && [ $LOCALES_CHANGED -ne 0 ]; then # still need to extract the locale information from the archive echo "extract locale changesets" tar -xf $SOURCE_TARBALL $LOCALE_FILE fi get_source_stamp "$BUILD_ID" else # We are working on a version that is not yet published on the mozilla mirror # so we have to actually check out the repo # mozilla if [ -d $PRODUCT-$VERSION ]; then pushd $PRODUCT-$VERSION || exit 1 _repourl=$(hg paths) case "$_repourl" in *$BRANCH*) echo "updating previous tree" hg pull popd || exit 1 ;; * ) echo "removing obsolete tree" popd || exit 1 rm -rf $PRODUCT-$VERSION ;; esac fi if [ ! -d $PRODUCT-$VERSION ]; then echo "cloning new $BRANCH..." hg clone https://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION if [ "$PRODUCT" = "thunderbird" ]; then hg clone https://hg.mozilla.org/releases/comm-$CHANNEL $PRODUCT-$VERSION/comm fi fi pushd $PRODUCT-$VERSION || exit 1 # parse out the Firefox-release tag for this Thunderbird-checkout if [ "$PRODUCT" = "thunderbird" ]; then FF_RELEASE_TAG=$(grep ^GECKO_HEAD_REV ./comm/.gecko_rev.yml | awk -F ' ' '{print $2}') || exit 1 echo "Parsed Firefox base ID from .gecko_rev.yml: $FF_RELEASE_TAG" else FF_RELEASE_TAG="$RELEASE_TAG" fi hg update --check $FF_RELEASE_TAG [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG # get repo and source stamp REV=$(hg -R . parent --template="{node|short}\n") SOURCE_REPO=$(hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/https:/") TIMESTAMP=$(date +%Y%m%d%H%M%S) if [ "$PRODUCT" = "thunderbird" ]; then pushd comm || exit 1 hg update --check $RELEASE_TAG popd || exit 1 rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub fi popd || exit 1 echo "Extending $TAR_STAMP with:" echo "RELEASE_REPO=${SOURCE_REPO}" echo "RELEASE_TAG=${REV}" echo "RELEASE_TIMESTAMP=${TIMESTAMP}" # We "remove and add" instead of "replace" in case the entries are not there yet # Removing the old RELEASE_-tags sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP" # Appending the new echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP" echo "RELEASE_TAG=$REV" >> "$TAR_STAMP" echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP" echo "creating archive..." tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION fi if [ ! -z ${SKIP_LOCALES+x} ]; then echo "Skipping locales-creation." exit 0 fi if [ $LOCALES_CHANGED -ne 0 ]; then # l10n echo "fetching locales..." test ! -d l10n && mkdir l10n jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \ while read locale changeset ; do case $locale in ja-JP-mac|en-US) ;; *) echo "reading changeset information for $locale" echo "fetching $locale changeset $changeset ..." if [ -d "l10n/$locale/.hg" ]; then pushd "l10n/$locale" || exit 1 hg pull popd || exit 1 else hg clone "https://hg.mozilla.org/l10n-central/$locale" "l10n/$locale" fi [ "$RELEASE_TAG" == "default" ] || hg -R "l10n/$locale" up -C -r "$changeset" ;; esac done echo "creating l10n archive..." if [ "$PRODUCT" = "thunderbird" ]; then TB_TAR_FLAGS="--exclude=browser --exclude=suite" fi tar $compression -cf l10n-$VERSION$VERSION_SUFFIX.tar.xz \ --exclude=.hgtags --exclude=.hgignore --exclude=.hg \ $TB_TAR_FLAGS \ l10n elif [ -f "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" ]; then # Locales did not change, but the old tar-ball is in this directory # Simply rename it: echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz" mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz" fi ++++++ firefox-appdata.xml ++++++ <?xml version="1.0" encoding="UTF-8"?> <!-- Upstream does not want to ship it https://bugzilla.mozilla.org/show_bug.cgi?id=1071061 so maintain a stub in here. --> <component> <id type="desktop">firefox.desktop</id> <metadata_license>CC0-1.0</metadata_license> <name>Firefox Web Browser</name> <project_license>MPL-2.0</project_license> <summary>Mozilla Firefox Web Browser</summary> <url type="homepage">http://www.mozilla.org/</url> <description> <p>Mozilla Firefox is a standalone web browser, designed for privacy, security, standards compliance and performance. Its functionality can be enhanced via a plethora of extensions.</p> <p>Firefox makes your daily web browsing fun and easy with a number of features, including:</p> <ul> <li>Tabbed browsing</li> <li>Private browsing including do-not-track enabled by default</li> <li>Advanced phishing and malware protection</li> <li>Spell checking</li> <li>Incremental find within pages</li> <li>Live bookmarking and Smart Bookmarks</li> <li>Download manager</li> <li>Location-aware browsing</li> <li>Compliant with modern web standards</li> <li>Modern web development tools</li> <li>Available in a wide number of locales</li> <li>A thriving ecosystem of themes and extensions at https://addons.mozilla.org</li> </ul> </description> <screenshots> <screenshot type="default"> <image height="800" width="1280">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-05-20-16-04-21-88bff4.png</image> <caption>New tab page with speed dials</caption> </screenshot> <screenshot> <image height="439" width="620">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-12-22-15-15-05-3c0a80.png</image> <caption>Search suggestions from home page</caption> </screenshot> <screenshot> <image height="394" width="700">https://addons.cdn.mozilla.net/user-media/previews/full/159/159648.png</image> <caption>Firefox with Adwaita theme</caption> </screenshot> </screenshots> <update_contact>mdn@lists.mozilla.org</update_contact> </component> ++++++ firefox-branded-icons.patch ++++++ # HG changeset patch # Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de # Parent 08eb6ff2987f5dc19078c364f71ec9f822841164 diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild --- a/browser/branding/branding-common.mozbuild +++ b/browser/branding/branding-common.mozbuild @@ -22,12 +22,15 @@ def FirefoxBranding(): FINAL_TARGET_FILES.VisualElements += [ 'VisualElements_150.png', 'VisualElements_70.png', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': FINAL_TARGET_FILES.chrome.icons.default += [ 'default128.png', 'default16.png', + 'default22.png', + 'default24.png', + 'default256.png', 'default32.png', 'default48.png', 'default64.png', ] diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -240,20 +240,23 @@ @RESPATH@/chrome/pdfjs.manifest @RESPATH@/chrome/pdfjs/* @RESPATH@/chrome/toolkit@JAREXT@ @RESPATH@/chrome/toolkit.manifest @RESPATH@/chrome/recording.manifest @RESPATH@/chrome/recording/* #ifdef MOZ_GTK @RESPATH@/browser/chrome/icons/default/default16.png +@RESPATH@/browser/chrome/icons/default/default22.png +@RESPATH@/browser/chrome/icons/default/default24.png @RESPATH@/browser/chrome/icons/default/default32.png @RESPATH@/browser/chrome/icons/default/default48.png @RESPATH@/browser/chrome/icons/default/default64.png @RESPATH@/browser/chrome/icons/default/default128.png +@RESPATH@/browser/chrome/icons/default/default256.png #endif @RESPATH@/browser/features/* ; [DevTools Startup Files] @RESPATH@/browser/chrome/devtools-startup@JAREXT@ @RESPATH@/browser/chrome/devtools-startup.manifest ; DevTools ++++++ firefox-i586-conflict-typedef-error.patch ++++++ # HG changeset patch # Parent 46c6ca04c48b6ba86e0cf6e1cf2bab8014a29f1f This fixes a broken build on 32 bit i586. diff --git a/modules/fdlibm/src/e_rem_pio2.cpp b/modules/fdlibm/src/e_rem_pio2.cpp --- a/modules/fdlibm/src/e_rem_pio2.cpp +++ b/modules/fdlibm/src/e_rem_pio2.cpp @@ -42,16 +42,20 @@ two24 = 1.67772160000000000000e+07, /* invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */ pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */ pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */ +#if defined(i386) || defined(__i386__) || defined(__i386) +typedef __double_t double_t; +#endif + #ifdef INLINE_REM_PIO2 static inline #endif int __ieee754_rem_pio2(double x, double *y) { double z,w,t,r,fn; double tx[3],ty[2]; diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h --- a/modules/fdlibm/src/math_private.h +++ b/modules/fdlibm/src/math_private.h @@ -26,17 +26,19 @@ #include "mozilla/EndianUtils.h" /* * Emulate FreeBSD internal double types. * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t */ typedef double __double_t; +#if !defined(i386) && !defined(__i386__) && !defined(__i386) typedef __double_t double_t; +#endif /* * The original fdlibm code used statements like: * n0 = ((*(int*)&one)>>29)^1; * index of high word * * ix0 = *(n0+(int*)&x); * high word of x * * ix1 = *((1-n0)+(int*)&x); * low word of x * * to dig two 32 bit words out of the 64 bit IEEE floating point * value. That is non-ANSI, and, moreover, the gcc instruction ++++++ firefox-kde.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1559300151 -7200 # Fri May 31 12:55:51 2019 +0200 # Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec # Parent b03e19640d8c1aba55e548e53af73854d8286702 How to apply this patch: 1. Import and apply it 2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul 3. Find editBookmarkPanelDoneButton 4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style) 5. hg qrefresh diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js @@ -342,16 +342,23 @@ var gMainPane = { }, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]); }; window.setTimeout(() => { window.requestIdleCallback(pollForDefaultBrowser); }, backoffTimes[this._backoffIndex]); } + var env = Components.classes["@mozilla.org/process/environment;1"] + .getService(Components.interfaces.nsIEnvironment); + var kde_session = 0; + if (env.get('KDE_FULL_SESSION') == "true") { + kde_session = 1; + } + this.initBrowserContainers(); this.buildContentProcessCountMenuList(); let performanceSettingsLink = document.getElementById( "performanceSettingsLearnMore" ); let performanceSettingsUrl = Services.urlFormatter.formatURLPref("app.support.baseURL") + @@ -1320,16 +1327,27 @@ var gMainPane = { this._backoffIndex = 0; let shellSvc = getShellService(); if (!shellSvc) { return; } try { shellSvc.setDefaultBrowser(true, false); + if (kde_session == 1) { + var shellObj = Components.classes["@mozilla.org/file/local;1"] + .createInstance(Components.interfaces.nsILocalFile); + shellObj.initWithPath("/usr/bin/kwriteconfig"); + var process = Components.classes["@mozilla.org/process/util;1"] + .createInstance(Components.interfaces.nsIProcess); + process.init(shellObj); + var args = ["--file", "kdeglobals", "--group", "General", "--key", + "BrowserApplication", "firefox"]; + process.run(false, args, args.length); + } } catch (ex) { Cu.reportError(ex); return; } let isDefault = shellSvc.isDefaultBrowser(false, true); let setDefaultPane = document.getElementById("setDefaultPane"); setDefaultPane.classList.toggle("is-default", isDefault); diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build --- a/browser/components/shell/moz.build +++ b/browser/components/shell/moz.build @@ -31,16 +31,18 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "coco ] elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": XPIDL_SOURCES += [ "nsIGNOMEShellService.idl", ] SOURCES += [ "nsGNOMEShellService.cpp", + "nsKDEShellService.cpp", + "nsUnixShellService.cpp", ] if CONFIG["MOZ_ENABLE_DBUS"]: SOURCES += [ "nsGNOMEShellDBusHelper.cpp", "nsGNOMEShellSearchProvider.cpp", ] include("/ipc/chromium/chromium-config.mozbuild") diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp new file mode 100644 --- /dev/null +++ b/browser/components/shell/nsKDEShellService.cpp @@ -0,0 +1,103 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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 "mozilla/ArrayUtils.h" + +#include "nsCOMPtr.h" +#include "nsKDEShellService.h" +#include "nsShellService.h" +#include "nsKDEUtils.h" +#include "nsIPrefService.h" +#include "nsIProcess.h" +#include "nsIFile.h" +#include "nsServiceManagerUtils.h" +#include "nsComponentManagerUtils.h" +#include "nsIMutableArray.h" +#include "nsISupportsPrimitives.h" +#include "nsArrayUtils.h" + +using namespace mozilla; + +nsresult +nsKDEShellService::Init() +{ + if( !nsKDEUtils::kdeSupport()) + return NS_ERROR_NOT_AVAILABLE; + return NS_OK; +} + +NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService) + +NS_IMETHODIMP +nsKDEShellService::IsDefaultBrowser(bool aForAllTypes, + bool* aIsDefaultBrowser) +{ + *aIsDefaultBrowser = false; + + nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID ); + if (!command) + return NS_ERROR_FAILURE; + + nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + if (!str) + return NS_ERROR_FAILURE; + + str->SetData("ISDEFAULTBROWSER"_ns); + command->AppendElement( str ); + + if( nsKDEUtils::command( command )) + *aIsDefaultBrowser = true; + return NS_OK; +} + +NS_IMETHODIMP +nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes, + bool aForAllUsers) +{ + nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID ); + if (!command) + return NS_ERROR_FAILURE; + + nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + if (!cmdstr || !paramstr) + return NS_ERROR_FAILURE; + + cmdstr->SetData("SETDEFAULTBROWSER"_ns); + command->AppendElement( cmdstr ); + + paramstr->SetData( aClaimAllTypes ? "ALLTYPES"_ns : "NORMAL"_ns ); + command->AppendElement( paramstr ); + + return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsKDEShellService::GetCanSetDesktopBackground(bool* aResult) +{ + *aResult = true; + return NS_OK; +} + +NS_IMETHODIMP +nsKDEShellService::SetDesktopBackground(dom::Element* aElement, + int32_t aPosition, + const nsACString& aImageName) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h new file mode 100644 --- /dev/null +++ b/browser/components/shell/nsKDEShellService.h @@ -0,0 +1,32 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +#ifndef nskdeshellservice_h____ +#define nskdeshellservice_h____ + +#include "nsIGNOMEShellService.h" +#include "nsToolkitShellService.h" +#include "nsString.h" +#include "mozilla/Attributes.h" + +class nsKDEShellService final : public nsIGNOMEShellService, + public nsToolkitShellService +{ +public: + nsKDEShellService() : mCheckedThisSession(false) { } + + NS_DECL_ISUPPORTS + NS_DECL_NSISHELLSERVICE + NS_DECL_NSIGNOMESHELLSERVICE + + nsresult Init(); + +private: + ~nsKDEShellService() {} + + bool mCheckedThisSession; +}; + +#endif // nskdeshellservice_h____ diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp new file mode 100644 --- /dev/null +++ b/browser/components/shell/nsUnixShellService.cpp @@ -0,0 +1,22 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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 "nsUnixShellService.h" +#include "nsGNOMEShellService.h" +#include "nsKDEShellService.h" +#include "nsKDEUtils.h" +#include "mozilla/ModuleUtils.h" + +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init) + +NS_IMETHODIMP +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult) +{ + if( nsKDEUtils::kdeSupport()) + return nsKDEShellServiceConstructor( aOuter, aIID, aResult ); + return nsGNOMEShellServiceConstructor( aOuter, aIID, aResult ); +} diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h new file mode 100644 --- /dev/null +++ b/browser/components/shell/nsUnixShellService.h @@ -0,0 +1,15 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + + +#ifndef nsunixshellservice_h____ +#define nsunixshellservice_h____ + +#include "nsIGNOMEShellService.h" + +NS_IMETHODIMP +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult); + +#endif // nsunixshellservice_h____ ++++++ firefox-mimeinfo.xml ++++++ <?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-xpinstall"> <comment xml:lang="en">Mozilla Cross-Platform Installer Module</comment> <glob pattern="*.xpi" /> </mime-type> </mime-info> ++++++ firefox-search-provider.ini ++++++ [Shell Search Provider] DesktopId=firefox.desktop BusName=org.mozilla.Firefox.SearchProvider ObjectPath=/org/mozilla/Firefox/SearchProvider Version=2 ++++++ firefox.1 ++++++ .TH FIREFOX 1 "November 30, 2017" firefox "Linux User's Manual" .SH NAME firefox \- a Web browser for X11 derived from the Mozilla browser .SH SYNOPSIS .B firefox [\fIOPTIONS\fR ...] [\fIURL\fR] .B firefox-bin [\fIOPTIONS\fR] [\fIURL\fR] .SH DESCRIPTION \fBMozilla Firefox\fR is an open-source web browser, designed for standards compliance, performance and portability. .SH USAGE \fBfirefox\fR is a simple shell script that will set up the environment for the actual executable, \fBfirefox-bin\fR. .SH OPTIONS A summary of the options supported by \fBfirefox\fR is included below. .SS "X11 options" .TP .BI \-\-display= DISPLAY X display to use .TP .B \--sync Make X calls synchronous .TP .B \-\-g-fatal-warnings Make all warnings fatal .SS "Firefox options" .TP .B \-h, \-help Show summary of options. .TP .B \-v, \-version Print Firefox version. .TP \fB\-P\fR \fIprofile\fR Start with \fIprofile\fR. .TP \fB\-\-profile\fR \fIpath\fR Start with profile at \fIpath\fR. .TP \fB\-\-migration\fR Start with migration wizard. .TP .B \-\-ProfileManager Start with ProfileManager. .TP \fB\-\-no\-remote\fR Do not accept or send remote commands; implies \fB--new-instance\fR. .TP \fB\-\-new\-instance\fR Open new instance, not a new window in running instance. .TP \fB\-\-UILocale\fR \fIlocale\fR Start with \fIlocale\fR resources as UI Locale. .TP \fB\-\-safe\-mode\fR Disables extensions and themes for this session. .TP \fB\-\-headless\fR Run without a GUI. .TP \fB\-\-marionette\fR Enable remote control server. .TP \fB\-\-browser\fR Open a browser window. .TP \fB\-\-new-window\fR \fIurl\fR Open \fIurl\fR in a new window. .TP \fB\-\-new-tab\fR \fIurl\fR Open \fIurl\fR in a new tab. .TP \fB\-\-private-window\fR \fIurl\fR Open \fIurl\fR in a new private window. .TP \fB\-\-preferences\fR Open Preferences dialog. .TP \fB\-\-screenshot\fR [\fIpath\fR] Save screenshot to \fIpath\fR or in working directory. .TP \fB\-\-window-size\fR \fIwidth\fR[,\fIheight\fR] Width and optionally height of screenshot. .TP \fB\-\-search\fR \fIterm\fR Search \fIterm\fR with your default search engine. .TP \fB\-\-jsconsole\fR Open the Browser Console. .TP \fB\-\-jsdebugger\fR Open the Browser Toolbox. .TP \fB\-\-wait-for-jsdebugger\fR Spin event loop until JS debugger connects. Enables debugging (some) application startup code paths. Only has an effect when \fI--jsdebugger\fR is also supplied. .TP \fB\-\-devtools\fR Open DevTools on initial load. .TP \fB\-\-start-debugger-server\fR [ws:][\fIport\fR|\fIpath\fR] Start the debugger server on a TCP port or Unix domain socket path. Defaults to TCP port 6000. Use WebSocket protocol if ws: prefix is specified. .TP \fB\-\-recording\fR \fIfile\fR Record drawing for a given URL. .TP \fB\-\-recording-output\fR \fIfile\fR Specify destination file for a drawing recording. .TP \fB\-\-setDefaultBrowser\fR Set this app as the default browser. .SH FILES \fI/usr/bin/firefox\fR - shell script wrapping \fBfirefox\fR .br \fI/usr/lib64/firefox/firefox-bin\fR - \fBfirefox\fR executable .SH VERSION 57.0 .SH BUGS To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR .SH AUTHORS .TP .B The Mozilla Organization .I http://www.mozilla.org/about.html .TP .B Tobias Girstmair .I https://gir.st/ ++++++ firefox.js ++++++ pref("intl.locale.requested", ""); pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); /* Disable DoH by default */ pref("network.trr.mode", 5); // do not disable any scope pref("extensions.autoDisableScopes", 0); pref("extensions.shownSelectionUI", true); pref("extensions.langpacks.signatures.required", false); // enable D-Bus inteface for Gnome Shell search pref("browser.gnome-search-provider.enabled", true); ++++++ google-api-key ++++++ AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q ++++++ mozilla-aarch64-startup-crash.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1558442998 -7200 # Tue May 21 14:49:58 2019 +0200 # Node ID 386083b58d8558141901d796ec6919a4aba7ad3a # Parent 2e9a1f2e8b3ec61b223d26b8ca48a09dc76eb593 bsc#991344 - Rpi3: Firefox crashes after a few seconds of usage bmo#1302554 - ARM/AARCH64: Firefox crashes on NULL nsIChannel** result pointer in nsIOService::NewChannelFromURIWithProxyFlagsInternal() diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp --- a/netwerk/base/nsIOService.cpp +++ b/netwerk/base/nsIOService.cpp @@ -1141,17 +1141,23 @@ nsresult nsIOService::NewChannelFromURIW "doesn't support nsIUploadChannel2. An extension has " "supplied a non-functional http protocol handler. This will " "break behavior and in future releases not work at all."); } gHasWarnedUploadChannel2 = true; } } +#if defined(__aarch64__) + if (result) { + channel.forget(result); + } +#else channel.forget(result); +#endif return NS_OK; } NS_IMETHODIMP nsIOService::NewChannelFromURIWithProxyFlags( nsIURI* aURI, nsIURI* aProxyURI, uint32_t aProxyFlags, nsINode* aLoadingNode, nsIPrincipal* aLoadingPrincipal, nsIPrincipal* aTriggeringPrincipal, uint32_t aSecurityFlags, ++++++ mozilla-api-key ++++++ 4605624048be48fda932495844d16fbb ++++++ mozilla-bmo1005535.patch ++++++ # HG changeset patch # User Steve Singer <steve@ssinger.info> # Date 1558451540 -7200 # Tue May 21 17:12:20 2019 +0200 # Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad # Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf Bug 1005535 - Get skia GPU building on big endian. diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h --- a/gfx/skia/skia/src/gpu/GrColor.h +++ b/gfx/skia/skia/src/gpu/GrColor.h @@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un #define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF) #define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF) #define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF) /** * Since premultiplied means that alpha >= color, we construct a color with * each component==255 and alpha == 0 to be "illegal" */ -#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A)) +#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A))) /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */ static inline float GrNormalizeByteToFloat(uint8_t value) { static const float ONE_OVER_255 = 1.f / 255.f; return value * ONE_OVER_255; } /** Used to pick vertex attribute types. */ ++++++ mozilla-bmo1504834-part1.patch ++++++ # HG changeset patch # Parent e0d0968c156c509c0848720e548333f95e57b714 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -138,18 +138,17 @@ static IntRect CalculateSurfaceBounds(co Rect sampledBounds = inverse.TransformBounds(*aBounds); if (!sampledBounds.ToIntRect(&bounds)) { return surfaceBounds; } return surfaceBounds.Intersect(bounds); } -static const int kARGBAlphaOffset = - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; +static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, const int32_t aStride, SurfaceFormat aFormat) { if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { return true; } // We should've initialized the data to be opaque already // On debug builds, verify that this is actually true. diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h @@ -89,25 +89,18 @@ enum class SurfaceFormat : int8_t { Depth, // This represents the unknown format. UNKNOWN, // The following values are endian-independent synonyms. The _UINT32 suffix // indicates that the name reflects the layout when viewed as a uint32_t // value. -#if MOZ_LITTLE_ENDIAN() A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB -#elif MOZ_BIG_ENDIAN() - A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB - X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB -#else -# error "bad endianness" -#endif // The following values are OS and endian-independent synonyms. // // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. OS_RGBA = A8R8G8B8_UINT32, OS_RGBX = X8R8G8B8_UINT32 }; diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc --- a/gfx/skia/skia/third_party/skcms/skcms.cc +++ b/gfx/skia/skia/third_party/skcms/skcms.cc @@ -25,16 +25,18 @@ // it'd be a lot slower. But we want all those headers included so we // can use their features after runtime checks later. #include <smmintrin.h> #include <avxintrin.h> #include <avx2intrin.h> #include <avx512fintrin.h> #include <avx512dqintrin.h> #endif +#else + #define SKCMS_PORTABLE #endif // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. // // Please do not use sizeof() directly, and size_t only when required. // (We have no way of enforcing these requests...) #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) @@ -275,30 +277,38 @@ enum { skcms_Signature_sf32 = 0x73663332, // XYZ is also a PCS signature, so it's defined in skcms.h // skcms_Signature_XYZ = 0x58595A20, }; static uint16_t read_big_u16(const uint8_t* ptr) { uint16_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return be; +#else + #if defined(_MSC_VER) return _byteswap_ushort(be); -#else + #else return __builtin_bswap16(be); + #endif #endif } static uint32_t read_big_u32(const uint8_t* ptr) { uint32_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ + return be; +#else + #if defined(_MSC_VER) return _byteswap_ulong(be); -#else + #else return __builtin_bswap32(be); + #endif #endif } static int32_t read_big_i32(const uint8_t* ptr) { return (int32_t)read_big_u32(ptr); } static float read_big_fixed(const uint8_t* ptr) { ++++++ mozilla-bmo1504834-part2.patch ++++++ # HG changeset patch # Parent 9319844dca3133fa8bd7107079f1d1ddc5c0bf70 Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla) has no interest in maintaining big endian. So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes out again, we transform back to BE. diff --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp --- a/gfx/2d/ConvolutionFilter.cpp +++ b/gfx/2d/ConvolutionFilter.cpp @@ -29,32 +29,79 @@ bool ConvolutionFilter::GetFilterOffsetA int32_t* aResultLength) { if (aRowIndex >= mFilter->numValues()) { return false; } mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength); return true; } +static void ByteSwapArray(uint8_t *u8Array, int32_t size) { + uint32_t *array = reinterpret_cast<uint32_t*>(u8Array); + for (int pxl = 0; pxl < size; ++pxl) { + // Use an endian swap to move the bytes, i.e. BGRA -> ARGB. + uint32_t rgba = array[pxl]; + array[pxl] = NativeEndian::swapToLittleEndian(rgba); + } +} + void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst, bool aHasAlpha) { +#if MOZ_BIG_ENDIAN() + int outputSize = mFilter->numValues(); + + // Input size isn't handed in, so we have to calculate it quickly + int inputSize = 0; + for (int xx = 0; xx < outputSize; ++xx) { + // Get the filter that determines the current output pixel. + int filterOffset, filterLength; + mFilter->FilterForValue(xx, &filterOffset, &filterLength); + inputSize = std::max(inputSize, filterOffset + filterLength); + } + + ByteSwapArray((uint8_t*)aSrc, inputSize); +#endif + SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha); + +#if MOZ_BIG_ENDIAN() + ByteSwapArray((uint8_t*)aSrc, inputSize); + ByteSwapArray(aDst, outputSize); +#endif } void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst, int32_t aRowIndex, int32_t aRowSize, bool aHasAlpha) { MOZ_ASSERT(aRowIndex < mFilter->numValues()); int32_t filterOffset; int32_t filterLength; auto filterValues = mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); + +#if MOZ_BIG_ENDIAN() + for (int filterY = 0; filterY < filterLength; filterY++) { + // Skia only knows LE, so we have to swizzle the input + ByteSwapArray(aSrc[filterY], aRowSize); + } +#endif + SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst, aHasAlpha); + +#if MOZ_BIG_ENDIAN() + // After skia is finished, we swizzle back to BE, in case + // the input is used again somewhere else + for (int filterY = 0; filterY < filterLength; filterY++) { + ByteSwapArray(aSrc[filterY], aRowSize); + } + // The destination array as well + ByteSwapArray(aDst, aRowSize); +#endif } /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's * SkBitmapScaler/SkResizeFilter::computeFactors. It is governed by Skia's * BSD-style license (see gfx/skia/LICENSE) and the following copyright: * Copyright (c) 2015 Google Inc. */ bool ConvolutionFilter::ComputeResizeFilter(ResizeMethod aResizeMethod, diff --git a/gfx/skia/skia/include/core/SkPreConfig.h b/gfx/skia/skia/include/core/SkPreConfig.h --- a/gfx/skia/skia/include/core/SkPreConfig.h +++ b/gfx/skia/skia/include/core/SkPreConfig.h @@ -68,17 +68,17 @@ #define SK_CPU_BENDIAN #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) #define SK_CPU_LENDIAN #elif defined(__sparc) || defined(__sparc__) || \ defined(_POWER) || defined(__powerpc__) || \ defined(__ppc__) || defined(__hppa) || \ defined(__PPC__) || defined(__PPC64__) || \ defined(_MIPSEB) || defined(__ARMEB__) || \ - defined(__s390__) || \ + defined(__s390__) || defined(__s390x__) || \ (defined(__sh__) && defined(__BIG_ENDIAN__)) || \ (defined(__ia64) && defined(__BIG_ENDIAN__)) #define SK_CPU_BENDIAN #else #define SK_CPU_LENDIAN #endif #endif ++++++ mozilla-bmo1504834-part3.patch ++++++ # HG changeset patch # Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48 For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h --- a/gfx/skia/skia/include/private/SkNx.h +++ b/gfx/skia/skia/include/private/SkNx.h @@ -233,17 +233,28 @@ struct SkNx<1,T> { AI SkNx operator<<(int bits) const { return fVal << bits; } AI SkNx operator>>(int bits) const { return fVal >> bits; } AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; } AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; } AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } + // On Big endian the commented out variant doesn't work, + // and honestly, I have no idea why it exists in the first place. + // The reason its broken is, I think, that it defaults to the double-variant of ToBits() + // which gets a 64-bit integer, and FromBits returns 32-bit, + // cutting off the wrong half again. + // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles). + // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system) +#ifdef SK_CPU_BENDIAN + AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } +#else AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } +#endif AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); } AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); } AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); } AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); } AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); } diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h --- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h +++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h @@ -198,17 +198,23 @@ namespace SK_OPTS_NS { const SkAlpha* mask, size_t maskRB, int w, int h) { auto fn = [](const Sk4px& d, const Sk4px& aa) { // = (s + d(1-sa))aa + d(1-aa) // = s*aa + d(1-sa*aa) // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) + + // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 +#ifdef SK_CPU_BENDIAN + return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) +#else return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) +#endif + d.approxMulDiv255(aa.inv()); }; while (h --> 0) { Sk4px::MapDstAlpha(w, dst, mask, fn); dst += dstRB / sizeof(*dst); mask += maskRB / sizeof(*mask); } } ++++++ mozilla-bmo1504834-part4.patch ++++++ # HG changeset patch # Parent 9a81c514ee8e4c47359b9a44228ec6f2465b7104 Problem description: Tab-titles that are too long to fit into a tab get faded out. On big endian this is broken and instead of fading out, the tab gets white and the font transparent, leading to an unreadable tab-title Solution: This is not a real solution, but a hack. The real solution would have been to byte-swap the correct buffer, but I could not find it. So the next best thing is to deactivate the fading-effect. Now all tab-titles are readable, albeit not as pretty to look at as they could be. Side-effects: I have not yet found an unwanted side-effect. diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -1929,16 +1929,24 @@ void DrawTargetSkia::PushLayerWithBlend( } SkCanvas::SaveLayerRec saveRec( aBounds.IsEmpty() ? nullptr : &bounds, &paint, nullptr, clipImage.get(), &clipMatrix, SkCanvas::kPreserveLCDText_SaveLayerFlag | (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); +#if MOZ_BIG_ENDIAN() + // Pushing a layer where an aMask is defined produces wrong output. + // We _should_ endian swap the data, but I couldn't find a workable way to do so + // Therefore I deactivate those layers in the meantime. + // The result is: Tab-titles that are longer than the available space should be faded out. + // The fading doesn't work, so we deactivate the fading-effect here. + if (!aMask) +#endif mCanvas->saveLayer(saveRec); SetPermitSubpixelAA(aOpaque); #ifdef MOZ_WIDGET_COCOA CGContextRelease(mCG); mCG = nullptr; #endif ++++++ mozilla-bmo1512162.patch ++++++ # HG changeset patch # Parent e66ee2abf627f4bf8974d8cb9b3cd386070742fe This fixes a broken build for gcc < 9 on ppc64le. This patch can be removed for newer gcc-versions. diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp --- a/js/xpconnect/src/XPCWrappedNative.cpp +++ b/js/xpconnect/src/XPCWrappedNative.cpp @@ -1073,17 +1073,21 @@ class MOZ_STACK_CLASS CallMethodHelper f uint32_t* result); MOZ_ALWAYS_INLINE bool GetInterfaceTypeFromParam(const nsXPTType& type, nsID* result) const; MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, MutableHandleValue srcp) const; - MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); +#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) +// Work around a compiler bug on ppc64le (bug 1512162). + MOZ_ALWAYS_INLINE +#endif + bool GatherAndConvertResults(); MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); nsXPTCVariant* GetDispatchParam(uint8_t paramIndex) { if (paramIndex >= mJSContextIndex) { paramIndex += 1; } if (paramIndex >= mOptArgcIndex) { @@ -1120,17 +1124,21 @@ class MOZ_STACK_CLASS CallMethodHelper f { // Success checked later. mIFaceInfo->GetMethodInfo(mVTableIndex, &mMethodInfo); } ~CallMethodHelper(); - MOZ_ALWAYS_INLINE bool Call(); +#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) +// Work around a compiler bug on ppc64le (bug 1512162). + MOZ_ALWAYS_INLINE +#endif + bool Call(); // Trace implementation so we can put our CallMethodHelper in a Rooted<T>. void trace(JSTracer* aTrc); }; // static bool XPCWrappedNative::CallMethod(XPCCallContext& ccx, CallMode mode /*= CALL_METHOD */) { ++++++ mozilla-bmo1568145.patch ++++++ Author: Bernhard M. Wiedemann <bwiedemann suse de> Date: 2019-07-22 Allow to override build date with SOURCE_DATE_EPOCH in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good and https://reproducible-builds.org/specs/source-date-epoch/ for the definition of this variable. diff --git a/python/mozbuild/mozbuild/action/langpack_manifest.py b/python/mozbuild/mozbuild/action/langpack_manifest.py --- a/python/mozbuild/mozbuild/action/langpack_manifest.py +++ b/python/mozbuild/mozbuild/action/langpack_manifest.py @@ -11,16 +11,17 @@ from __future__ import absolute_import, print_function, unicode_literals import argparse import sys import os import json import io import datetime +import time import requests import mozversioncontrol import mozpack.path as mozpath from mozpack.chrome.manifest import ( Manifest, ManifestLocale, parse_manifest, ) @@ -100,17 +101,17 @@ def get_dt_from_hg(path): # ts == "20170914215617" ### def get_timestamp_for_locale(path): dt = None if os.path.isdir(os.path.join(path, ".hg")): dt = get_dt_from_hg(path) if dt is None: - dt = datetime.datetime.utcnow() + dt = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))) dt = dt.replace(microsecond=0) return dt.strftime("%Y%m%d%H%M%S") ### # Parses multiple defines files into a single key-value pair object. # ++++++ mozilla-bmo1602730.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1582805890 -3600 # Thu Feb 27 13:18:10 2020 +0100 # Node ID 457cbe5705f2a3759d3da36a05c0ed66ec61ea12 # Parent 7440f4b6bab85068ca2f84e9c48e0706d04330e8 imported patch mozilla-bmo1602730-FF73.patch diff -r 7440f4b6bab8 gfx/layers/composite/CompositableHost.cpp --- a/gfx/layers/composite/CompositableHost.cpp Thu Feb 27 13:17:56 2020 +0100 +++ b/gfx/layers/composite/CompositableHost.cpp Wed Jun 17 15:33:32 2020 +0200 @@ -92,9 +92,13 @@ } MOZ_ASSERT(source); + // Setting an alpha-mask here breaks the URL-bar on big endian (s390x) + // if the typed URL is too long for the textbox (automatic scrolling needed) +#if MOZ_LITTLE_ENDIAN() RefPtr<EffectMask> effect = new EffectMask(source, source->GetSize(), aTransform); aEffects.mSecondaryEffects[EffectTypes::MASK] = effect; +#endif return true; } ++++++ mozilla-bmo1626236.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1582805876 -3600 # Thu Feb 27 13:17:56 2020 +0100 # Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158 # Parent 7c2bddde658687c3fa2a6f2a89b6e2beae44f3e5 imported patch decoder_workaround.patch diff --git a/image/decoders/nsGIFDecoder2.cpp b/image/decoders/nsGIFDecoder2.cpp --- a/image/decoders/nsGIFDecoder2.cpp +++ b/image/decoders/nsGIFDecoder2.cpp @@ -416,16 +416,19 @@ void nsGIFDecoder2::ConvertColormap(uint qcms_transform_data(transform, aColormap, aColormap, aColors); } } // Expand color table from RGB to BGRA. MOZ_ASSERT(mSwizzleFn); uint8_t* data = reinterpret_cast<uint8_t*>(aColormap); mSwizzleFn(data, data, aColors); +#if MOZ_BIG_ENDIAN() + SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors); +#endif } LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator, IResumable* aOnResume) { MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!"); return mLexer.Lex( aIterator, aOnResume, diff --git a/image/decoders/nsJPEGDecoder.cpp b/image/decoders/nsJPEGDecoder.cpp --- a/image/decoders/nsJPEGDecoder.cpp +++ b/image/decoders/nsJPEGDecoder.cpp @@ -252,30 +252,34 @@ LexerTransition<nsJPEGDecoder::State> ns // We're doing a full decode. switch (mInfo.jpeg_color_space) { case JCS_GRAYSCALE: case JCS_RGB: case JCS_YCbCr: // By default, we will output directly to BGRA. If we need to apply // special color transforms, this may change. +#if MOZ_BIG_ENDIAN() + mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; +#else switch (SurfaceFormat::OS_RGBX) { case SurfaceFormat::B8G8R8X8: mInfo.out_color_space = JCS_EXT_BGRX; break; case SurfaceFormat::X8R8G8B8: mInfo.out_color_space = JCS_EXT_XRGB; break; case SurfaceFormat::R8G8B8X8: mInfo.out_color_space = JCS_EXT_RGBX; break; default: mState = JPEG_ERROR; return Transition::TerminateFailure(); } +#endif break; case JCS_CMYK: case JCS_YCCK: // libjpeg can convert from YCCK to CMYK, but not to XRGB. mInfo.out_color_space = JCS_CMYK; break; default: mState = JPEG_ERROR; diff --git a/image/decoders/nsPNGDecoder.cpp b/image/decoders/nsPNGDecoder.cpp --- a/image/decoders/nsPNGDecoder.cpp +++ b/image/decoders/nsPNGDecoder.cpp @@ -351,26 +351,34 @@ nsresult nsPNGDecoder::InitInternal() { return NS_OK; } LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator, IResumable* aOnResume) { MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!"); - return mLexer.Lex(aIterator, aOnResume, + LexerResult res = mLexer.Lex(aIterator, aOnResume, [=](State aState, const char* aData, size_t aLength) { switch (aState) { case State::PNG_DATA: return ReadPNGData(aData, aLength); case State::FINISHED_PNG_DATA: return FinishedPNGData(); } MOZ_CRASH("Unknown State"); }); + +#if MOZ_BIG_ENDIAN() + if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) { + NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4); + } +#endif + + return res; } LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData( const char* aData, size_t aLength) { // If we were waiting until after returning from a yield to call // CreateFrame(), call it now. if (mNextFrameInfo) { if (NS_FAILED(CreateFrame(*mNextFrameInfo))) { diff --git a/image/decoders/nsWebPDecoder.cpp b/image/decoders/nsWebPDecoder.cpp --- a/image/decoders/nsWebPDecoder.cpp +++ b/image/decoders/nsWebPDecoder.cpp @@ -242,17 +242,22 @@ nsresult nsWebPDecoder::CreateFrame(cons ("[this=%p] nsWebPDecoder::CreateFrame -- create decoder error\n", this)); return NS_ERROR_FAILURE; } // WebP doesn't guarantee that the alpha generated matches the hint in the // header, so we always need to claim the input is BGRA. If the output is // BGRX, swizzling will mask off the alpha channel. +#if MOZ_BIG_ENDIAN() + mBuffer.colorspace = MODE_ARGB; + SurfaceFormat inFormat = mFormat; +#else SurfaceFormat inFormat = SurfaceFormat::OS_RGBA; +#endif SurfacePipeFlags pipeFlags = SurfacePipeFlags(); if (mFormat == SurfaceFormat::OS_RGBA && !(GetSurfaceFlags() & SurfaceFlags::NO_PREMULTIPLY_ALPHA)) { pipeFlags |= SurfacePipeFlags::PREMULTIPLY_ALPHA; } Maybe<AnimationParams> animParams; ++++++ mozilla-bmo1735309.patch ++++++ diff --git a/.cargo/config.in b/.cargo/config.in --- a/.cargo/config.in +++ b/.cargo/config.in @@ -12,11 +12,6 @@ replace-with = "vendored-sources" rev = "85551909b95a5cf553a85dbcddfa5f117cfbbe0e" -[source."https://github.com/mozilla/neqo"] -git = "https://github.com/mozilla/neqo" -replace-with = "vendored-sources" -tag = "v0.4.28" - [source."https://github.com/mozilla/mp4parse-rust"] git = "https://github.com/mozilla/mp4parse-rust" replace-with = "vendored-sources" @@ -92,6 +87,11 @@ replace-with = "vendored-sources" rev = "27a1dae3796d33d23812f2bb8c7e3b5aea18b521" +[source."https://github.com/ddragana/neqo/"] +branch = "pr_1247" +git = "https://github.com/ddragana/neqo/" +replace-with = "vendored-sources" + [source."https://github.com/bytecodealliance/wasmtime"] git = "https://github.com/bytecodealliance/wasmtime" replace-with = "vendored-sources" diff --git a/Cargo.lock b/Cargo.lock --- a/Cargo.lock +++ b/Cargo.lock @@ -2770,7 +2770,7 @@ "libc", "libloading 0.5.2", "lucet-module-wasmsbx", - "memoffset", + "memoffset 0.5.6", "nix", "num-derive", "num-traits", @@ -3231,7 +3231,7 @@ [[package]] name = "neqo-common" version = "0.4.28" -source = "git+https://github.com/mozilla/neqo?tag=v0.4.28#c3d909e40d2ee68e2937b7dac1831a27..." +source = "git+https://github.com/ddragana/neqo/?branch=pr_1247#0dc6eb8a337e1402172f83d9c99..." dependencies = [ "chrono", "env_logger", @@ -3244,7 +3244,7 @@ [[package]] name = "neqo-crypto" version = "0.4.28" -source = "git+https://github.com/mozilla/neqo?tag=v0.4.28#c3d909e40d2ee68e2937b7dac1831a27..." +source = "git+https://github.com/ddragana/neqo/?branch=pr_1247#0dc6eb8a337e1402172f83d9c99..." dependencies = [ "bindgen", "log", @@ -3257,7 +3257,7 @@ [[package]] name = "neqo-http3" version = "0.4.28" -source = "git+https://github.com/mozilla/neqo?tag=v0.4.28#c3d909e40d2ee68e2937b7dac1831a27..." +source = "git+https://github.com/ddragana/neqo/?branch=pr_1247#0dc6eb8a337e1402172f83d9c99..." dependencies = [ "log", "neqo-common", @@ -3271,7 +3271,7 @@ [[package]] name = "neqo-qpack" version = "0.4.28" -source = "git+https://github.com/mozilla/neqo?tag=v0.4.28#c3d909e40d2ee68e2937b7dac1831a27..." +source = "git+https://github.com/ddragana/neqo/?branch=pr_1247#0dc6eb8a337e1402172f83d9c99..." dependencies = [ "lazy_static", "log", @@ -3285,7 +3285,7 @@ [[package]] name = "neqo-transport" version = "0.4.28" -source = "git+https://github.com/mozilla/neqo?tag=v0.4.28#c3d909e40d2ee68e2937b7dac1831a27..." +source = "git+https://github.com/ddragana/neqo/?branch=pr_1247#0dc6eb8a337e1402172f83d9c99..." dependencies = [ "indexmap", "lazy_static", diff --git a/netwerk/socket/neqo_glue/Cargo.toml b/netwerk/socket/neqo_glue/Cargo.toml --- a/netwerk/socket/neqo_glue/Cargo.toml +++ b/netwerk/socket/neqo_glue/Cargo.toml @@ -8,10 +8,10 @@ name = "neqo_glue" [dependencies] -neqo-http3 = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-transport = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-common = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-qpack = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } +neqo-http3 = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-transport = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-common = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-qpack = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } nserror = { path = "../../../xpcom/rust/nserror" } nsstring = { path = "../../../xpcom/rust/nsstring" } xpcom = { path = "../../../xpcom/rust/xpcom" } @@ -20,7 +20,7 @@ qlog = "0.4.0" [dependencies.neqo-crypto] -tag = "v0.4.28" -git = "https://github.com/mozilla/neqo" +git = "https://github.com/ddragana/neqo/" +branch="pr_1247" default-features = false features = ["gecko"] diff --git a/netwerk/test/http3server/Cargo.toml b/netwerk/test/http3server/Cargo.toml --- a/netwerk/test/http3server/Cargo.toml +++ b/netwerk/test/http3server/Cargo.toml @@ -5,17 +5,17 @@ edition = "2018" [dependencies] -neqo-transport = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-common = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-http3 = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } -neqo-qpack = { tag = "v0.4.28", git = "https://github.com/mozilla/neqo" } +neqo-transport = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-common = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-http3 = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } +neqo-qpack = { git = "https://github.com/ddragana/neqo/", branch="pr_1247" } mio = "0.6.17" mio-extras = "2.0.5" log = "0.4.0" [dependencies.neqo-crypto] -tag = "v0.4.28" -git = "https://github.com/mozilla/neqo" +git = "https://github.com/ddragana/neqo/" +branch="pr_1247" default-features = false features = ["gecko"] diff --git a/third_party/rust/neqo-crypto/.cargo-checksum.json b/third_party/rust/neqo-crypto/.cargo-checksum.json --- a/third_party/rust/neqo-crypto/.cargo-checksum.json +++ b/third_party/rust/neqo-crypto/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"d69edddfbe830720c227d018226a493ca524cc421f862d443ac32407b477490b","TODO":"ac0f1c2ebcca03f5b3c0cc56c5aedbb030a4b511e438bc07a57361c789f91e9f","bindings/bindings.toml":"26f85b25967a21522c7185914c8a31afee3e93bf5c5548341b27f708ea1ecede","bindings/mozpkix.hpp":"77072c8bb0f6eb6bfe8cbadc111dcd92e0c79936d13f2e501aae1e5d289a6675","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h": "713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"238238eca9a6428996b96ac2a4d6aa5f206b2892f6e9922e12e74e34fe39d47e","src/aead.rs":"140f77ffb5016836c970c39c6c3a42db9581a14b797b9cd05386d0dd0831fe63","src/aead_fuzzing.rs":"4e60d5a2ee6dedfd08602fa36318239e731244825df2cb801ca1d88f5f2a41c1","src/agent.rs":"9c413275bfa0a6f0c736d9925b4d5978d6b8c8a8ddb1c047b60e69ae1820858e","src/agentio.rs":"995e54772d6000d2773a2c57d67fc80756cab47dacfb4915e1ee49c5906d8495","src/auth.rs":"e821dac1511691151a6e64b7c7130a07d941dffad4529b2631f20ddd07d3f20c","src/cert.rs":"94450b248eed218b9227861ed81e557a543c0c88868fe1a434dc9c9f0f9651ae","src/constants.rs":"998e77bee88197a240032c1bfbddcff417a25ba82e576a0d2fe18ee9b63cefc7 ","src/ech.rs":"1d7b8760cd4e3cb2800fc9ff5fb2b1c89170fd379e43a9e1c626b7df0a59c6d3","src/err.rs":"38482dc0184802a5a503f540456f3af829641179eba32ed8ee7cc5d6a0afc6b3","src/exp.rs":"61586662407359c1ecb8ed4987bc3c702f26ba2e203a091a51b6d6363cbd510f","src/ext.rs":"361277879194dc32f741b8d1894afe5fd3fcc8eb244f7dd5914eeb959b85717d","src/hkdf.rs":"8d05bffddbd9950baa1d4920d42d29e3970caa308b32c1e59b9704dc257d87ab","src/hp.rs":"46a2023c421d89fda8d09b356b648272857fd20ee5cf5829143ac88402b32e4b","src/lib.rs":"2e486b5b18dcc6bf624080396e5f401fb0bed63db6dcd5e11c7614b7ce1bc196","src/once.rs":"b9850384899a1a016e839743d3489c0d4d916e1973746ef8c89872105d7d9736","src/p11.rs":"3e01b513b982fbc0b75bd66deeab8a9a355ede753091d2076c06111d36ecaf02","src/prio.rs":"38664072cafc4f7ce2dfe2e1e029afe87c423e01a60066c25a736644cb0ce379","src/replay.rs":"6c6a41c4d837ecd14e0dda05e9bf9a2eb6f3f4c3cc6eb8e41156dbd6bf3b1113","src/result.rs":"cef34dfcb907723e195b56501132e4560e250b327783cb5e41201da5b63e9b5c","src/secrets.rs":"48790a330 994d892742048000bd12460b7eee2c3daaa444481b8527406d0a4c7","src/selfencrypt.rs":"036a6a22bd0ce9ee849a986f6faad4a550de3551bd53de1f71a7d7d9b4206e5b","src/ssl.rs":"821dbe19590a8716327628a1df7ba4184a9df454227eac60f0e793bc426fc315","src/time.rs":"b71fa74ad979d78765dd037c12f5e97eefb9fefc91be8f7c6f45e74b66ac11fc","tests/aead.rs":"98a737643ca41b2f36f6eda5a5dcb2acd420650ef22ab0a8cbed16c423734cc7","tests/agent.rs":"c191782187cb344186195fe377d9f351f2454e5b437f8d4ad88ec3edc8608a5d","tests/ext.rs":"eba9f03accdd598e38292ac88263a81b367d60d5a736a43117a3663de105ec48","tests/handshake.rs":"6ea3e5b3bc889d201b55f959b658a848c0ada54c956bda087b2ac8897a24a786","tests/hkdf.rs":"539235e9dcf2a56b72961a9a04f0080409adf6bf465bfad7c30026421b2d4326","tests/hp.rs":"e52a7d2f4387f2dfe8bfe1da5867e8e0d3eb51e171c6904e18b18c4343536af8","tests/init.rs":"baf680de62f5b06f38a112192a2e9a2ac9492f2cdbdf5f4b749ef18c94c9ac35","tests/selfencrypt.rs":"1125c858ec4e0a6994f34d162aa066cb003c61b324f268529ea04bcb641347cb"},"package":null} \ No newline at end of file +{"files":{"Cargo.toml":"d69edddfbe830720c227d018226a493ca524cc421f862d443ac32407b477490b","TODO":"ac0f1c2ebcca03f5b3c0cc56c5aedbb030a4b511e438bc07a57361c789f91e9f","bindings/bindings.toml":"d136f82a333b0ee1499e7858fdfc3d630f7ff37501a3c51028a4eeb7e2f136b4","bindings/mozpkix.hpp":"77072c8bb0f6eb6bfe8cbadc111dcd92e0c79936d13f2e501aae1e5d289a6675","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h": "713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"238238eca9a6428996b96ac2a4d6aa5f206b2892f6e9922e12e74e34fe39d47e","src/aead.rs":"140f77ffb5016836c970c39c6c3a42db9581a14b797b9cd05386d0dd0831fe63","src/aead_fuzzing.rs":"4e60d5a2ee6dedfd08602fa36318239e731244825df2cb801ca1d88f5f2a41c1","src/agent.rs":"9c413275bfa0a6f0c736d9925b4d5978d6b8c8a8ddb1c047b60e69ae1820858e","src/agentio.rs":"995e54772d6000d2773a2c57d67fc80756cab47dacfb4915e1ee49c5906d8495","src/auth.rs":"e821dac1511691151a6e64b7c7130a07d941dffad4529b2631f20ddd07d3f20c","src/cert.rs":"94450b248eed218b9227861ed81e557a543c0c88868fe1a434dc9c9f0f9651ae","src/constants.rs":"998e77bee88197a240032c1bfbddcff417a25ba82e576a0d2fe18ee9b63cefc7 ","src/ech.rs":"1d7b8760cd4e3cb2800fc9ff5fb2b1c89170fd379e43a9e1c626b7df0a59c6d3","src/err.rs":"38482dc0184802a5a503f540456f3af829641179eba32ed8ee7cc5d6a0afc6b3","src/exp.rs":"61586662407359c1ecb8ed4987bc3c702f26ba2e203a091a51b6d6363cbd510f","src/ext.rs":"361277879194dc32f741b8d1894afe5fd3fcc8eb244f7dd5914eeb959b85717d","src/hkdf.rs":"3ff432cc9d40e1dc56e9f983b54b593647c4063a5ae0f16de0a64d033ac9bd94","src/hp.rs":"46a2023c421d89fda8d09b356b648272857fd20ee5cf5829143ac88402b32e4b","src/lib.rs":"2e486b5b18dcc6bf624080396e5f401fb0bed63db6dcd5e11c7614b7ce1bc196","src/once.rs":"b9850384899a1a016e839743d3489c0d4d916e1973746ef8c89872105d7d9736","src/p11.rs":"3e01b513b982fbc0b75bd66deeab8a9a355ede753091d2076c06111d36ecaf02","src/prio.rs":"38664072cafc4f7ce2dfe2e1e029afe87c423e01a60066c25a736644cb0ce379","src/replay.rs":"6c6a41c4d837ecd14e0dda05e9bf9a2eb6f3f4c3cc6eb8e41156dbd6bf3b1113","src/result.rs":"cef34dfcb907723e195b56501132e4560e250b327783cb5e41201da5b63e9b5c","src/secrets.rs":"48790a330 994d892742048000bd12460b7eee2c3daaa444481b8527406d0a4c7","src/selfencrypt.rs":"4a9af42ccefbc77c65baedf00ef389de4fa7ed855d7ab3b60542b5931050667d","src/ssl.rs":"821dbe19590a8716327628a1df7ba4184a9df454227eac60f0e793bc426fc315","src/time.rs":"b71fa74ad979d78765dd037c12f5e97eefb9fefc91be8f7c6f45e74b66ac11fc","tests/aead.rs":"a0fe826aa3bfcce22dbe1b06b74823cb2334331ffe6ce6152952613e9e1ccae5","tests/agent.rs":"c191782187cb344186195fe377d9f351f2454e5b437f8d4ad88ec3edc8608a5d","tests/ext.rs":"eba9f03accdd598e38292ac88263a81b367d60d5a736a43117a3663de105ec48","tests/handshake.rs":"6ea3e5b3bc889d201b55f959b658a848c0ada54c956bda087b2ac8897a24a786","tests/hkdf.rs":"47830c1ea58a02d100522bdde6fabc02bb447ccb85affa0cdc44bc25da1be32a","tests/hp.rs":"92e062538c01fa7a474225714ed238d846ceb8c8feb9d79eb05be6111b00fb1e","tests/init.rs":"baf680de62f5b06f38a112192a2e9a2ac9492f2cdbdf5f4b749ef18c94c9ac35","tests/selfencrypt.rs":"1125c858ec4e0a6994f34d162aa066cb003c61b324f268529ea04bcb641347cb"},"package":null} \ No newline at end of file diff --git a/third_party/rust/neqo-crypto/bindings/bindings.toml b/third_party/rust/neqo-crypto/bindings/bindings.toml --- a/third_party/rust/neqo-crypto/bindings/bindings.toml +++ b/third_party/rust/neqo-crypto/bindings/bindings.toml @@ -163,7 +163,7 @@ "PK11_GetKeyData", "PK11_GetMechanism", "PK11_HPKE_Serialize", - "PK11_ImportSymKey", + "PK11_ImportDataKey", "PK11_ReadRawAttribute", "PK11_ReferenceSymKey", "SECITEM_FreeItem", @@ -196,11 +196,10 @@ "CKM_AES_ECB", "CKM_AES_GCM", "CKM_EC_KEY_PAIR_GEN", + "CKM_HKDF_DERIVE", "CKM_INVALID_MECHANISM", "CKM_NSS_CHACHA20_CTR", "CKM_NSS_CHACHA20_POLY1305", - "CKM_NSS_HKDF_SHA256", - "CKM_NSS_HKDF_SHA384", "PK11_ATTR_INSENSITIVE", "PK11_ATTR_PRIVATE", "PK11_ATTR_PUBLIC", diff --git a/third_party/rust/neqo-crypto/src/hkdf.rs b/third_party/rust/neqo-crypto/src/hkdf.rs --- a/third_party/rust/neqo-crypto/src/hkdf.rs +++ b/third_party/rust/neqo-crypto/src/hkdf.rs @@ -10,8 +10,8 @@ }; use crate::err::{Error, Res}; use crate::p11::{ - random, Item, PK11Origin, PK11SymKey, PK11_ImportSymKey, Slot, SymKey, CKA_DERIVE, - CKM_NSS_HKDF_SHA256, CKM_NSS_HKDF_SHA384, CK_ATTRIBUTE_TYPE, CK_MECHANISM_TYPE, + random, Item, PK11Origin, PK11SymKey, PK11_ImportDataKey, Slot, SymKey, CKA_DERIVE, + CKM_HKDF_DERIVE, CK_ATTRIBUTE_TYPE, CK_MECHANISM_TYPE, }; use std::convert::TryFrom; @@ -52,27 +52,22 @@ /// # Errors /// Only if NSS fails. pub fn generate_key(version: Version, cipher: Cipher) -> Res<SymKey> { - import_key(version, cipher, &random(key_size(version, cipher)?)) + import_key(version, &random(key_size(version, cipher)?)) } /// Import a symmetric key for use with HKDF. /// /// # Errors /// Errors returned if the key buffer is an incompatible size or the NSS functions fail. -pub fn import_key(version: Version, cipher: Cipher, buf: &[u8]) -> Res<SymKey> { +pub fn import_key(version: Version, buf: &[u8]) -> Res<SymKey> { if version != TLS_VERSION_1_3 { return Err(Error::UnsupportedVersion); } - let mech = match cipher { - TLS_AES_128_GCM_SHA256 | TLS_CHACHA20_POLY1305_SHA256 => CKM_NSS_HKDF_SHA256, - TLS_AES_256_GCM_SHA384 => CKM_NSS_HKDF_SHA384, - _ => return Err(Error::UnsupportedCipher), - }; let slot = Slot::internal()?; let key_ptr = unsafe { - PK11_ImportSymKey( + PK11_ImportDataKey( *slot, - CK_MECHANISM_TYPE::from(mech), + CK_MECHANISM_TYPE::from(CKM_HKDF_DERIVE), PK11Origin::PK11_OriginUnwrap, CK_ATTRIBUTE_TYPE::from(CKA_DERIVE), &mut Item::wrap(buf), diff --git a/third_party/rust/neqo-crypto/src/selfencrypt.rs b/third_party/rust/neqo-crypto/src/selfencrypt.rs --- a/third_party/rust/neqo-crypto/src/selfencrypt.rs +++ b/third_party/rust/neqo-crypto/src/selfencrypt.rs @@ -41,7 +41,7 @@ fn make_aead(&self, k: &SymKey, salt: &[u8]) -> Res<Aead> { debug_assert_eq!(salt.len(), Self::SALT_LENGTH); - let salt = hkdf::import_key(self.version, self.cipher, salt)?; + let salt = hkdf::import_key(self.version, salt)?; let secret = hkdf::extract(self.version, self.cipher, Some(&salt), k)?; Aead::new(self.version, self.cipher, &secret, "neqo self") } diff --git a/third_party/rust/neqo-crypto/tests/aead.rs b/third_party/rust/neqo-crypto/tests/aead.rs --- a/third_party/rust/neqo-crypto/tests/aead.rs +++ b/third_party/rust/neqo-crypto/tests/aead.rs @@ -26,7 +26,6 @@ let secret = hkdf::import_key( TLS_VERSION_1_3, - cipher, &[ 0x47, 0xb2, 0xea, 0xea, 0x6c, 0x26, 0x6e, 0x32, 0xc0, 0x69, 0x7a, 0x9e, 0x2a, 0x89, 0x8b, 0xdf, 0x5c, 0x4f, 0xb3, 0xe5, 0xac, 0x34, 0xf0, 0xe5, 0x49, 0xbf, 0x2c, 0x58, diff --git a/third_party/rust/neqo-crypto/tests/hkdf.rs b/third_party/rust/neqo-crypto/tests/hkdf.rs --- a/third_party/rust/neqo-crypto/tests/hkdf.rs +++ b/third_party/rust/neqo-crypto/tests/hkdf.rs @@ -38,8 +38,8 @@ fn import_keys(cipher: Cipher) -> (SymKey, SymKey) { let l = cipher_hash_len(cipher); ( - hkdf::import_key(TLS_VERSION_1_3, cipher, &SALT[0..l]).expect("import salt"), - hkdf::import_key(TLS_VERSION_1_3, cipher, &IKM[0..l]).expect("import IKM"), + hkdf::import_key(TLS_VERSION_1_3, &SALT[0..l]).expect("import salt"), + hkdf::import_key(TLS_VERSION_1_3, &IKM[0..l]).expect("import IKM"), ) } diff --git a/third_party/rust/neqo-crypto/tests/hp.rs b/third_party/rust/neqo-crypto/tests/hp.rs --- a/third_party/rust/neqo-crypto/tests/hp.rs +++ b/third_party/rust/neqo-crypto/tests/hp.rs @@ -9,7 +9,7 @@ use test_fixture::fixture_init; fn make_hp(cipher: Cipher) -> HpKey { - let ikm = hkdf::import_key(TLS_VERSION_1_3, cipher, &[0; 16]).expect("import IKM"); + let ikm = hkdf::import_key(TLS_VERSION_1_3, &[0; 16]).expect("import IKM"); let prk = hkdf::extract(TLS_VERSION_1_3, cipher, None, &ikm).expect("extract works"); HpKey::extract(TLS_VERSION_1_3, cipher, &prk, "hp").expect("extract label works") } diff --git a/third_party/rust/neqo-transport/.cargo-checksum.json b/third_party/rust/neqo-transport/.cargo-checksum.json --- a/third_party/rust/neqo-transport/.cargo-checksum.json +++ b/third_party/rust/neqo-transport/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"3455dc33fc70b594be56f5b0e8ff857ba79ce8646cb2fbc6c9eea3f6e428cf05","TODO":"d759cb804b32fa9d96ea8d3574a3c4073da9fe6a0b02b708a0e22cce5a5b4a0f","src/ackrate.rs":"cd288796a35329761f8da8963e83fca3083d08e813ec741e7f3f37c8465a60ce","src/addr_valid.rs":"9042f2b3c4de283d7c7d3b0c828453013173be5b11f025f48a32ba441f6c5c91","src/cc/classic_cc.rs":"47fa9dc840a580fc32fb7d763c92b1b7e401e018822c7df42aa3f0e8be236dcc","src/cc/cubic.rs":"f43449dde372b098bf27d4ccf3d31d8276935bc021343a1478e8a21647b5ba6f","src/cc/mod.rs":"7a7eeecebdbe2ea610c41fe1ae77083070f26158d60c0d32fd49e63302568e73","src/cc/new_reno.rs":"ec8a604abf5de8db738d4d96ebaad24c757a47828af0091fdab4e54d1edf5bc7","src/cc/tests/cubic.rs":"88ed30285c3fb7bfb55ed3ec127210d805982fca9b5882fb3a28f1302567f9fe","src/cc/tests/mod.rs":"1567bf0ddaff5cb679217f2fd65f01e15a302b9b9e68b69f3e617dcaf7b3e5ec","src/cc/tests/new_reno.rs":"6068715ace20d831718a5b5a4e7e1d37f83c02a5b870dc6c2289166407d741db","src/cid.rs":"bcf36cb211634317de299e93aba7 68897b6d93428294779571ecbda90813545a","src/connection/idle.rs":"e3c902858737de89e2e8955796c6e60dcfbcffaf58b3a1c4473fed04c7eae55c","src/connection/mod.rs":"1123159837e8be4dab110af961e4a11be92c5737d7dc778af728e9a510edeb80","src/connection/params.rs":"a6f67a270acc3bf4c33ebd59681483b5abad7a23a4ec9578dd14d1ce2fe454b6","src/connection/saved.rs":"b70f81635e210102208790ef308a0dea4b7e87900e6083ca6b299d4c1d5b9058","src/connection/state.rs":"e4505b12784756ee8ad4ed60b3ef75d9e3abaaafd4d6ef1c212544e393c9ed85","src/connection/test_internal.rs":"f3ebfe97b25c9c716d41406066295e5aff4e96a3051ef4e2b5fb258282bbc14c","src/connection/tests/ackrate.rs":"6530705d78fa86eb257195337979e35ce0186ccbced15ecd3ebbf730ff16f100","src/connection/tests/cc.rs":"90e71e2c7e2b70c98375ac4815a0b0deddce657e7afc2ab67e5c9029c6596526","src/connection/tests/close.rs":"f02522c5a525a24601227904c9f176f884114d7b23a3db04cb38e0694a21672a","src/connection/tests/fuzzing.rs":"ef96fb5c3af63fbc44da70bdbc73a16234443332ba812282db6da876b07db861 ","src/connection/tests/handshake.rs":"e01362c04f78ef9f258d1386bb286ad1c6c8fc2c2e1043348be05d5d85383144","src/connection/tests/idle.rs":"2a488f31f4f2473a6953688fab7ce6a63d0ec96690977cac23291d03263a8ca4","src/connection/tests/keys.rs":"aa99f858a9aee3f6160ce44e4b2abc39b01b6973f0112d0840aaff1151e9eb6d","src/connection/tests/migration.rs":"5fd7efa936d76e9ab7c52efb59cf1c4a4dd3a03f6a2a1f60747d1572c7d0ef00","src/connection/tests/mod.rs":"ee61062e7cca4a2939f31ad8318efdee1e8418fdd083af9a7fa7d89e7b23f896","src/connection/tests/priority.rs":"468f9178ba3b720607a155dce906bb2394adbe8309ddb8dacc4201b4d300f76b","src/connection/tests/recovery.rs":"b4177ef09274d6aea38515392d8a94248792d6b4c04589c471a40c6d4b01609f","src/connection/tests/resumption.rs":"359a388fe515502dd20b5ebdb5d6f7ff2d85798a14a38e8d97706a4cdf88383e","src/connection/tests/stream.rs":"7b37ccce7b35b1d7dd93d3b1d7165101cdba18b7cbc42c47254a0b0aa36d380a","src/connection/tests/vn.rs":"086b5a249f244b9e783231876f6e549f1481dd0136c9a19f9852a3d166 bef172","src/connection/tests/zerortt.rs":"4e82c5f2d549b3cf75f311f2ed7825947c55277d9564b36df2de77c18818f9d0","src/crypto.rs":"ccae01d7b3ee4b3e1b8653b4d7f3d99e287260f33fdcd9ad698000cde86f7a56","src/dump.rs":"72c090345ec5d10b71b1d708e303afc1cbf029abb18b1f176f048855c45dda1a","src/events.rs":"e6d75954f467b7e0ce4bd6338ab9d27ff1d121a2fc5602026f51912d45a1623a","src/fc.rs":"e400097e000cdd7ebe8020e082bb2d14fc8d16dacd44b9af6227af6bb3161cda","src/flow_mgr.rs":"7512a5ed545caf08ec6e100fb179ad96039c9e185cf1f455a561e8b282d292e0","src/frame.rs":"9637f1acfe3df675bd57243532df41c94ebc1a25aea050de87c23bae9a6b83e3","src/lib.rs":"fe2c93c1b215ae5e58080c454e29ddb9723050e7fb5372e5204eeaea78a1e52e","src/pace.rs":"6c6a67ae4300f0af3670bae76478741348e56d2090245ce6c014fa85f066fe01","src/packet/mod.rs":"cbad6015ebd27876107935b834688e53aab581d296d04eb49b2cd0f7efec84f2","src/packet/retry.rs":"4323bf888626a808e3be4a889a853fe7cea215c1bf4c7a1b4b23fdbc3c2521b5","src/path.rs":"cd400d41bfd25e1d496ceef3b5ca130320153eeddd6 44119689e69fb7cf394a8","src/qlog.rs":"6e631b514d5d286c05e6e56cbf51cbcf9278ec13fa087bbc1daac093e06fa4fb","src/recovery.rs":"28929e6e0b5a9d297cb9961228515f3d2db1adb078183b64efd58f441f017f0f","src/recv_stream.rs":"26bf29b988c87c9ddacd0c69cd5157c719306a1bbf05e29420a6d923d22b76b3","src/rtt.rs":"a332ef5fc8c9bbee8494e11a83104d80689030ba127ffb1e995f24738a14ae3c","src/send_stream.rs":"374a9069d1a2bc7723b81160fa829e6c44d861d38a6cec2b91da0806134e7675","src/sender.rs":"07f8030e2a341ac0496016d46a06b2b1778f268c8b9abc8ae66c1482fdc72653","src/server.rs":"5aa34a042284c2f3a8e95baba9b815693e5d18f7ce39e4d05bccaa1127ab0272","src/stats.rs":"5afd83e84cdc3a5273d964385f27f09d46a9d6a2bcfdf0e33781dd4c2cbdb80b","src/stream_id.rs":"c5794d0991b98a490618fe0554ce2d6efd1612493f92feb72adad0deb1aefc89","src/streams.rs":"bb5b841fbf23c385fb444e08acc264f0af0d0a6be49b386a5ea19a2fb6013e98","src/tparams.rs":"df8ecb2e5f3625a7e3fb51632b20432a66e4ab8901d27963fe659b22ae2325be","src/tracking.rs":"e728699298cda297e6c7670aca4a11f 7b72ef07d395af1930b703cc03ed7fc6d","tests/common/mod.rs":"ab776536b5db66017c59235e53400e3ac22de6c93549bdbe7e1958bfc38fd415","tests/conn_vectors.rs":"1801e7bd91db40e343efd56b30dc12bbe83048211f3aa6b4c0cca7cf065b1384","tests/connection.rs":"fe9b7069b34fea7f5154e9b1ea3bffb290a4aa9a7c97c30992c51fa7a6ad6673","tests/network.rs":"a986c22da7132ec843a44c4bcb5a7d2726132aa27a47a8ea91634cd88e1b763b","tests/retry.rs":"ed217392c9681e5bbc294028038b7fd256252ab8e3e343c9c2cec56c60568f02","tests/server.rs":"496cc3630ec55631fcc87df5023dd3047dceb6d1f4b34cfd842d7ffcf53ec5e1","tests/sim/connection.rs":"51c582423dd4f4b2484d0ee790235ce9b4677f936a6c8ce09a6c3d3da9b3e519","tests/sim/delay.rs":"9efa722adb89e37262369e9f3c67405f0acc8c24997271811e48df9e856e5a8d","tests/sim/drop.rs":"bd89e5c71cdd1b27cd755faaedd87d5feadf2f424df721a7df41a51bcebcbb58","tests/sim/mod.rs":"9a930682cf92e7279bccdd2145f19ff17f5aa950994e7b3e25749651511c2753","tests/sim/net.rs":"597f4d37bc26c3d82eeeaa6d14dd03bc2be3930686df2b293748b43c07c497d7 ","tests/sim/rng.rs":"2c90b0bbaf0c952ebee232deb3594f7a86af387737b15474de3e97ee6b623d90","tests/sim/taildrop.rs":"5c505d150f0071e8cc2d540b3a817a6942fdf13df32f1fbc6822952f2e146176"},"package":null} \ No newline at end of file +{"files":{"Cargo.toml":"3455dc33fc70b594be56f5b0e8ff857ba79ce8646cb2fbc6c9eea3f6e428cf05","TODO":"d759cb804b32fa9d96ea8d3574a3c4073da9fe6a0b02b708a0e22cce5a5b4a0f","src/ackrate.rs":"cd288796a35329761f8da8963e83fca3083d08e813ec741e7f3f37c8465a60ce","src/addr_valid.rs":"9042f2b3c4de283d7c7d3b0c828453013173be5b11f025f48a32ba441f6c5c91","src/cc/classic_cc.rs":"47fa9dc840a580fc32fb7d763c92b1b7e401e018822c7df42aa3f0e8be236dcc","src/cc/cubic.rs":"f43449dde372b098bf27d4ccf3d31d8276935bc021343a1478e8a21647b5ba6f","src/cc/mod.rs":"7a7eeecebdbe2ea610c41fe1ae77083070f26158d60c0d32fd49e63302568e73","src/cc/new_reno.rs":"ec8a604abf5de8db738d4d96ebaad24c757a47828af0091fdab4e54d1edf5bc7","src/cc/tests/cubic.rs":"88ed30285c3fb7bfb55ed3ec127210d805982fca9b5882fb3a28f1302567f9fe","src/cc/tests/mod.rs":"1567bf0ddaff5cb679217f2fd65f01e15a302b9b9e68b69f3e617dcaf7b3e5ec","src/cc/tests/new_reno.rs":"6068715ace20d831718a5b5a4e7e1d37f83c02a5b870dc6c2289166407d741db","src/cid.rs":"bcf36cb211634317de299e93aba7 68897b6d93428294779571ecbda90813545a","src/connection/idle.rs":"e3c902858737de89e2e8955796c6e60dcfbcffaf58b3a1c4473fed04c7eae55c","src/connection/mod.rs":"1123159837e8be4dab110af961e4a11be92c5737d7dc778af728e9a510edeb80","src/connection/params.rs":"a6f67a270acc3bf4c33ebd59681483b5abad7a23a4ec9578dd14d1ce2fe454b6","src/connection/saved.rs":"b70f81635e210102208790ef308a0dea4b7e87900e6083ca6b299d4c1d5b9058","src/connection/state.rs":"e4505b12784756ee8ad4ed60b3ef75d9e3abaaafd4d6ef1c212544e393c9ed85","src/connection/test_internal.rs":"f3ebfe97b25c9c716d41406066295e5aff4e96a3051ef4e2b5fb258282bbc14c","src/connection/tests/ackrate.rs":"6530705d78fa86eb257195337979e35ce0186ccbced15ecd3ebbf730ff16f100","src/connection/tests/cc.rs":"90e71e2c7e2b70c98375ac4815a0b0deddce657e7afc2ab67e5c9029c6596526","src/connection/tests/close.rs":"f02522c5a525a24601227904c9f176f884114d7b23a3db04cb38e0694a21672a","src/connection/tests/fuzzing.rs":"ef96fb5c3af63fbc44da70bdbc73a16234443332ba812282db6da876b07db861 ","src/connection/tests/handshake.rs":"e01362c04f78ef9f258d1386bb286ad1c6c8fc2c2e1043348be05d5d85383144","src/connection/tests/idle.rs":"2a488f31f4f2473a6953688fab7ce6a63d0ec96690977cac23291d03263a8ca4","src/connection/tests/keys.rs":"aa99f858a9aee3f6160ce44e4b2abc39b01b6973f0112d0840aaff1151e9eb6d","src/connection/tests/migration.rs":"5fd7efa936d76e9ab7c52efb59cf1c4a4dd3a03f6a2a1f60747d1572c7d0ef00","src/connection/tests/mod.rs":"ee61062e7cca4a2939f31ad8318efdee1e8418fdd083af9a7fa7d89e7b23f896","src/connection/tests/priority.rs":"468f9178ba3b720607a155dce906bb2394adbe8309ddb8dacc4201b4d300f76b","src/connection/tests/recovery.rs":"b4177ef09274d6aea38515392d8a94248792d6b4c04589c471a40c6d4b01609f","src/connection/tests/resumption.rs":"359a388fe515502dd20b5ebdb5d6f7ff2d85798a14a38e8d97706a4cdf88383e","src/connection/tests/stream.rs":"7b37ccce7b35b1d7dd93d3b1d7165101cdba18b7cbc42c47254a0b0aa36d380a","src/connection/tests/vn.rs":"086b5a249f244b9e783231876f6e549f1481dd0136c9a19f9852a3d166 bef172","src/connection/tests/zerortt.rs":"4e82c5f2d549b3cf75f311f2ed7825947c55277d9564b36df2de77c18818f9d0","src/crypto.rs":"2b886642c22db39a3149f8ab7ac9322a593458ecb56e2d485cbbf4357554f795","src/dump.rs":"72c090345ec5d10b71b1d708e303afc1cbf029abb18b1f176f048855c45dda1a","src/events.rs":"e6d75954f467b7e0ce4bd6338ab9d27ff1d121a2fc5602026f51912d45a1623a","src/fc.rs":"e400097e000cdd7ebe8020e082bb2d14fc8d16dacd44b9af6227af6bb3161cda","src/flow_mgr.rs":"7512a5ed545caf08ec6e100fb179ad96039c9e185cf1f455a561e8b282d292e0","src/frame.rs":"9637f1acfe3df675bd57243532df41c94ebc1a25aea050de87c23bae9a6b83e3","src/lib.rs":"fe2c93c1b215ae5e58080c454e29ddb9723050e7fb5372e5204eeaea78a1e52e","src/pace.rs":"6c6a67ae4300f0af3670bae76478741348e56d2090245ce6c014fa85f066fe01","src/packet/mod.rs":"cbad6015ebd27876107935b834688e53aab581d296d04eb49b2cd0f7efec84f2","src/packet/retry.rs":"52b160481c59739742bd9ad4ec8768c8eeddc0d02bd3596e09a2a3ccfa52d41d","src/path.rs":"cd400d41bfd25e1d496ceef3b5ca130320153eeddd6 44119689e69fb7cf394a8","src/qlog.rs":"6e631b514d5d286c05e6e56cbf51cbcf9278ec13fa087bbc1daac093e06fa4fb","src/recovery.rs":"28929e6e0b5a9d297cb9961228515f3d2db1adb078183b64efd58f441f017f0f","src/recv_stream.rs":"26bf29b988c87c9ddacd0c69cd5157c719306a1bbf05e29420a6d923d22b76b3","src/rtt.rs":"a332ef5fc8c9bbee8494e11a83104d80689030ba127ffb1e995f24738a14ae3c","src/send_stream.rs":"374a9069d1a2bc7723b81160fa829e6c44d861d38a6cec2b91da0806134e7675","src/sender.rs":"07f8030e2a341ac0496016d46a06b2b1778f268c8b9abc8ae66c1482fdc72653","src/server.rs":"5aa34a042284c2f3a8e95baba9b815693e5d18f7ce39e4d05bccaa1127ab0272","src/stats.rs":"5afd83e84cdc3a5273d964385f27f09d46a9d6a2bcfdf0e33781dd4c2cbdb80b","src/stream_id.rs":"c5794d0991b98a490618fe0554ce2d6efd1612493f92feb72adad0deb1aefc89","src/streams.rs":"bb5b841fbf23c385fb444e08acc264f0af0d0a6be49b386a5ea19a2fb6013e98","src/tparams.rs":"df8ecb2e5f3625a7e3fb51632b20432a66e4ab8901d27963fe659b22ae2325be","src/tracking.rs":"e728699298cda297e6c7670aca4a11f 7b72ef07d395af1930b703cc03ed7fc6d","tests/common/mod.rs":"7057030b55fa5f23d71455f2f8206aa9aaff585222db804a748dc8f87db9523b","tests/conn_vectors.rs":"1801e7bd91db40e343efd56b30dc12bbe83048211f3aa6b4c0cca7cf065b1384","tests/connection.rs":"fe9b7069b34fea7f5154e9b1ea3bffb290a4aa9a7c97c30992c51fa7a6ad6673","tests/network.rs":"a986c22da7132ec843a44c4bcb5a7d2726132aa27a47a8ea91634cd88e1b763b","tests/retry.rs":"ed217392c9681e5bbc294028038b7fd256252ab8e3e343c9c2cec56c60568f02","tests/server.rs":"496cc3630ec55631fcc87df5023dd3047dceb6d1f4b34cfd842d7ffcf53ec5e1","tests/sim/connection.rs":"51c582423dd4f4b2484d0ee790235ce9b4677f936a6c8ce09a6c3d3da9b3e519","tests/sim/delay.rs":"9efa722adb89e37262369e9f3c67405f0acc8c24997271811e48df9e856e5a8d","tests/sim/drop.rs":"bd89e5c71cdd1b27cd755faaedd87d5feadf2f424df721a7df41a51bcebcbb58","tests/sim/mod.rs":"9a930682cf92e7279bccdd2145f19ff17f5aa950994e7b3e25749651511c2753","tests/sim/net.rs":"597f4d37bc26c3d82eeeaa6d14dd03bc2be3930686df2b293748b43c07c497d7 ","tests/sim/rng.rs":"2c90b0bbaf0c952ebee232deb3594f7a86af387737b15474de3e97ee6b623d90","tests/sim/taildrop.rs":"5c505d150f0071e8cc2d540b3a817a6942fdf13df32f1fbc6822952f2e146176"},"package":null} \ No newline at end of file diff --git a/third_party/rust/neqo-transport/src/crypto.rs b/third_party/rust/neqo-transport/src/crypto.rs --- a/third_party/rust/neqo-transport/src/crypto.rs +++ b/third_party/rust/neqo-transport/src/crypto.rs @@ -432,14 +432,8 @@ let initial_secret = hkdf::extract( TLS_VERSION_1_3, cipher, - Some( - hkdf::import_key(TLS_VERSION_1_3, cipher, salt) - .as_ref() - .unwrap(), - ), - hkdf::import_key(TLS_VERSION_1_3, cipher, dcid) - .as_ref() - .unwrap(), + Some(hkdf::import_key(TLS_VERSION_1_3, salt).as_ref().unwrap()), + hkdf::import_key(TLS_VERSION_1_3, dcid).as_ref().unwrap(), ) .unwrap(); @@ -1094,8 +1088,7 @@ let app_read = |epoch| CryptoDxAppData { dx: read(epoch), cipher: TLS_AES_128_GCM_SHA256, - next_secret: hkdf::import_key(TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, &[0xaa; 32]) - .unwrap(), + next_secret: hkdf::import_key(TLS_VERSION_1_3, &[0xaa; 32]).unwrap(), }; Self { initial: Some(CryptoState { @@ -1120,8 +1113,7 @@ 0x00, 0xa1, 0x54, 0x43, 0xf1, 0x82, 0x03, 0xa0, 0x7d, 0x60, 0x60, 0xf6, 0x88, 0xf3, 0x0f, 0x21, 0x63, 0x2b, ]; - let secret = - hkdf::import_key(TLS_VERSION_1_3, TLS_CHACHA20_POLY1305_SHA256, SECRET).unwrap(); + let secret = hkdf::import_key(TLS_VERSION_1_3, SECRET).unwrap(); let app_read = |epoch| CryptoDxAppData { dx: CryptoDxState { direction: CryptoDxDirection::Read, diff --git a/third_party/rust/neqo-transport/src/packet/retry.rs b/third_party/rust/neqo-transport/src/packet/retry.rs --- a/third_party/rust/neqo-transport/src/packet/retry.rs +++ b/third_party/rust/neqo-transport/src/packet/retry.rs @@ -28,7 +28,7 @@ #[cfg(debug_assertions)] ::neqo_crypto::assert_initialized(); - let secret = hkdf::import_key(TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, secret).unwrap(); + let secret = hkdf::import_key(TLS_VERSION_1_3, secret).unwrap(); Aead::new(TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, &secret, "quic ").unwrap() } thread_local!(static RETRY_AEAD_29: RefCell<Aead> = RefCell::new(make_aead(RETRY_SECRET_29))); diff --git a/third_party/rust/neqo-transport/tests/common/mod.rs b/third_party/rust/neqo-transport/tests/common/mod.rs --- a/third_party/rust/neqo-transport/tests/common/mod.rs +++ b/third_party/rust/neqo-transport/tests/common/mod.rs @@ -121,13 +121,11 @@ TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, Some( - hkdf::import_key(TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, INITIAL_SALT) + hkdf::import_key(TLS_VERSION_1_3, INITIAL_SALT) .as_ref() .unwrap(), ), - hkdf::import_key(TLS_VERSION_1_3, TLS_AES_128_GCM_SHA256, dcid) - .as_ref() - .unwrap(), + hkdf::import_key(TLS_VERSION_1_3, dcid).as_ref().unwrap(), ) .unwrap(); ++++++ mozilla-bmo849632.patch ++++++ # HG changeset patch # Parent d8a109ef1147ab718bd9328216e2e225cdb31323 Problem: webGL sites are displayed in the wrong color (usually blue-ish) Solution: Problem is with skia once again. Output of webgl seems endian-correct, but skia only knows how to deal with little endian. So we swizzle the output of webgl after reading it from readpixels() Note: This does not fix all webGL sites, but is a step in the right direction diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h --- a/gfx/gl/GLContext.h +++ b/gfx/gl/GLContext.h @@ -1560,16 +1560,23 @@ class GLContext : public GenericAtomicRe AFTER_GL_CALL; } void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) { BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); +#if MOZ_BIG_ENDIAN() + uint8_t* itr = (uint8_t*)pixels; + for (GLsizei i = 0; i < width * height; i++) { + NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1); + itr += 4; + } +#endif AFTER_GL_CALL; mHeavyGLCallsSinceLastFlush = true; } void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); public: ++++++ mozilla-bmo998749.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1583738770 -3600 # Mon Mar 09 08:26:10 2020 +0100 # Node ID 34676feac1a542e409e22acf5b98735f8313b1ce # Parent 506857dace0a08d1c9685e3ac264646590b3e27f [mq]: mozilla-bmo998749.patch diff -r 506857dace0a -r 34676feac1a5 gfx/2d/FilterProcessing.h --- a/gfx/2d/FilterProcessing.h Fri Feb 28 12:31:51 2020 +0100 +++ b/gfx/2d/FilterProcessing.h Mon Mar 09 08:26:10 2020 +0100 @@ -13,10 +13,17 @@ namespace mozilla { namespace gfx { +#if MOZ_BIG_ENDIAN() +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 3; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 2; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 1; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 0; +#else const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 0; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 1; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 2; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 3; +#endif class FilterProcessing { public: ++++++ mozilla-fix-aarch64-libopus.patch ++++++ # HG changeset patch # Parent 2640f2f68373b7bec776bb11d3b3fb75c72a8adb diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c --- a/media/libopus/silk/arm/arm_silk_map.c +++ b/media/libopus/silk/arm/arm_silk_map.c @@ -23,17 +23,17 @@ INTERRUPTION) HOWEVER CAUSED AND ON ANY CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include "main_FIX.h" +#include "../fixed/main_FIX.h" #include "NSQ.h" #include "SigProc_FIX.h" #if defined(OPUS_HAVE_RTCD) # if (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && \ !defined(OPUS_ARM_PRESUME_NEON_INTR)) ++++++ mozilla-fix-top-level-asm.patch ++++++ From 91bb79836ee274855393bdf6ab10e24899b1b349 Mon Sep 17 00:00:00 2001 From: Martin Liska <mliska@suse.cz> Date: Fri, 17 May 2019 14:41:35 +0200 Subject: [PATCH] Fix top-level asm issue. --- security/sandbox/linux/moz.build | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build --- a/security/sandbox/linux/moz.build +++ b/security/sandbox/linux/moz.build @@ -66,32 +66,32 @@ UNIFIED_SOURCES += [ "../chromium/base/time/time_now_posix.cc", "../chromium/sandbox/linux/bpf_dsl/bpf_dsl.cc", "../chromium/sandbox/linux/bpf_dsl/codegen.cc", "../chromium/sandbox/linux/bpf_dsl/dump_bpf.cc", "../chromium/sandbox/linux/bpf_dsl/policy.cc", "../chromium/sandbox/linux/bpf_dsl/policy_compiler.cc", "../chromium/sandbox/linux/bpf_dsl/syscall_set.cc", "../chromium/sandbox/linux/seccomp-bpf/die.cc", - "../chromium/sandbox/linux/seccomp-bpf/syscall.cc", "broker/SandboxBrokerCommon.cpp", "Sandbox.cpp", "SandboxBrokerClient.cpp", "SandboxFilter.cpp", "SandboxFilterUtil.cpp", "SandboxHooks.cpp", "SandboxInfo.cpp", "SandboxLogging.cpp", "SandboxOpenedFiles.cpp", "SandboxReporterClient.cpp", ] SOURCES += [ "../chromium/base/strings/safe_sprintf.cc", "../chromium/base/third_party/icu/icu_utf.cc", + "../chromium/sandbox/linux/seccomp-bpf/syscall.cc", "../chromium/sandbox/linux/seccomp-bpf/trap.cc", "../chromium/sandbox/linux/services/syscall_wrappers.cc", ] # This copy of SafeSPrintf doesn't need to avoid the Chromium logging # dependency like the one in libxul does, but this way the behavior is # consistent. See also the comment in SandboxLogging.h. SOURCES["../chromium/base/strings/safe_sprintf.cc"].flags += ["-DNDEBUG"] @@ -105,16 +105,19 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") "-Wno-unreachable-code-return" ] if CONFIG["CC_TYPE"] in ("clang", "gcc"): CXXFLAGS += ["-Wno-shadow", "-Wno-error=stack-protector"] SOURCES["../chromium/sandbox/linux/services/syscall_wrappers.cc"].flags += [ "-Wno-empty-body", ] + SOURCES['../chromium/sandbox/linux/seccomp-bpf/syscall.cc'].flags += [ + '-fno-lto' + ] # gcc lto likes to put the top level asm in syscall.cc in a different partition # from the function using it which breaks the build. Work around that by # forcing there to be only one partition. for f in CONFIG["OS_CXXFLAGS"]: if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": LDFLAGS += ["--param lto-partitions=1"] ++++++ mozilla-get-app-id ++++++ #!/usr/bin/perl -w use XML::Simple; my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n"; my $xml; if ($file =~ /\.xpi$/) { use Archive::Zip qw/:ERROR_CODES :CONSTANTS/; my $zip = Archive::Zip->new(); if ( $zip->read($file) != AZ_OK ) { die "zip file read error\n"; } my $data = $zip->contents("install.rdf"); die "missing install.rdf in $file\n" unless $data; $xml = XMLin($data) || die "$!\n"; } elsif ($file =~ /install.rdf/) { $xml = XMLin($file) || die "$!\n"; } else { die "unsupported file format\n"; } my $desc; for my $tag (qw/RDF:Description Description/) { if (exists $xml->{$tag}) { if (ref $xml->{$tag} eq 'ARRAY') { $desc = $xml->{$tag}; } else { $desc = [ $xml->{$tag} ]; } } } my $uuid; my $id; for my $x (@$desc) { if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) { print STDERR "Warning: multiple uuids!\n" if defined $uuid; $uuid = $x->{"em:id"}; } elsif ($x->{"em:id"} =~ /@/) { print STDERR "Warning: multiple ids!\n" if defined $id; $id = $x->{"em:id"}; } } if (defined $id) { print "$id\n"; } elsif (defined $uuid) { print "$uuid\n"; } else { exit 1; } ++++++ mozilla-kde.patch ++++++ ++++ 1941 lines (skipped) ++++++ mozilla-libavcodec58_91.patch ++++++ # HG changeset patch # Parent e4abeadbbb7a0c63c17177f1d14ea04c77c6128e diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp --- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp +++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp @@ -22,23 +22,27 @@ class FFmpegDecoderModule { static already_AddRefed<PlatformDecoderModule> Create(FFmpegLibWrapper*); }; static FFmpegLibWrapper sLibAV; static const char* sLibs[] = { // clang-format off #if defined(XP_DARWIN) + "libavcodec.58.134.dylib", + "libavcodec.58.91.dylib", "libavcodec.58.dylib", "libavcodec.57.dylib", "libavcodec.56.dylib", "libavcodec.55.dylib", "libavcodec.54.dylib", "libavcodec.53.dylib", #else + "libavcodec.so.58.134", + "libavcodec.so.58.91", "libavcodec.so.58", "libavcodec-ffmpeg.so.58", "libavcodec-ffmpeg.so.57", "libavcodec-ffmpeg.so.56", "libavcodec.so.57", "libavcodec.so.56", "libavcodec.so.55", "libavcodec.so.54", ++++++ mozilla-nongnome-proxies.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer # Date 1558442915 -7200 # Tue May 21 14:48:35 2019 +0200 # Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5 # Parent bd5d1f49975deb730064a16b3079edb53c4a5f84 Do not use gconf for proxy settings if not running within Gnome Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp =================================================================== RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v retrieving revision 1.1 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp @@ -49,20 +49,24 @@ NS_IMETHODIMP nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) { // dbus prevents us from being threadsafe, but this routine should not block // anyhow *aMainThreadOnly = true; return NS_OK; } void nsUnixSystemProxySettings::Init() { - mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); - if (mGSettings) { - mGSettings->GetCollectionForSchema("org.gnome.system.proxy"_ns, - getter_AddRefs(mProxySettings)); + const char* sessionType = PR_GetEnv("DESKTOP_SESSION"); + if (sessionType && !strcmp(sessionType, "gnome")) { + mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); + if (mGSettings) { + mGSettings->GetCollectionForSchema( + "org.gnome.system.proxy"_ns, + getter_AddRefs(mProxySettings)); + } } } nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) { if (mProxySettings) { nsCString proxyMode; // Check if mode is auto nsresult rv = mProxySettings->GetString("mode"_ns, proxyMode); ++++++ mozilla-ntlm-full-path.patch ++++++ # HG changeset patch # User Petr Cerny <pcerny@novell.com> # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6 # Parent 9faf5dc45596af1a7608a75d25a33043383e5f06 Bug 634334 - call to the ntlm_auth helper fails diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp --- a/extensions/auth/nsAuthSambaNTLM.cpp +++ b/extensions/auth/nsAuthSambaNTLM.cpp @@ -155,17 +155,17 @@ static uint8_t* ExtractMessage(const nsA *aLen = (length / 4) * 3 - numEquals; return reinterpret_cast<uint8_t*>(PL_Base64Decode(s, length, nullptr)); } nsresult nsAuthSambaNTLM::SpawnNTLMAuthHelper() { const char* username = PR_GetEnv("USER"); if (!username) return NS_ERROR_FAILURE; - const char* const args[] = {"ntlm_auth", + const char* const args[] = {"/usr/bin/ntlm_auth", "--helper-protocol", "ntlmssp-client-1", "--use-cached-creds", "--username", username, nullptr}; bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, ++++++ mozilla-pgo.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer <wr@rosenauer.org> # Parent ed9681bd4359b83145247fb6b01a56a2c84879fd diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure --- a/build/moz.configure/lto-pgo.configure +++ b/build/moz.configure/lto-pgo.configure @@ -235,23 +235,23 @@ def lto( "configure." ) if c_compiler.type == "clang": if len(value) and value[0].lower() == "full": cflags.append("-flto") ldflags.append("-flto") else: - cflags.append("-flto=thin") - ldflags.append("-flto=thin") + cflags.append("-flto") + ldflags.append("-flto") elif c_compiler.type == "clang-cl": if len(value) and value[0].lower() == "full": cflags.append("-flto") else: - cflags.append("-flto=thin") + cflags.append("-flto") # With clang-cl, -flto can only be used with -c or -fuse-ld=lld. # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld. cflags.append("-fuse-ld=lld") # Explicitly set the CPU to optimize for so the linker doesn't # choose a poor default. Rust compilation by default uses the # pentium4 CPU on x86: # diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py --- a/build/pgo/profileserver.py +++ b/build/pgo/profileserver.py @@ -6,17 +6,17 @@ import json import os import sys import glob import subprocess import mozcrash -from mozbuild.base import MozbuildObject, BinaryNotFoundException +from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException from mozfile import TemporaryDirectory from mozhttpd import MozHttpd from mozprofile import FirefoxProfile, Preferences from mozprofile.permissions import ServerLocations from mozrunner import FirefoxRunner, CLI from six import string_types PORT = 8888 @@ -82,19 +82,32 @@ if __name__ == "__main__": docroot=os.path.join(build.topsrcdir, "build", "pgo"), path_mappings=path_mappings, ) httpd.start(block=False) locations = ServerLocations() locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") - old_profraw_files = glob.glob("*.profraw") - for f in old_profraw_files: - os.remove(f) + using_gcc = False + try: + if build.config_environment.substs.get('CC_TYPE') == 'gcc': + using_gcc = True + except BuildEnvironmentNotFoundException: + pass + + if using_gcc: + for dirpath, _, filenames in os.walk('.'): + for f in filenames: + if f.endswith('.gcda'): + os.remove(os.path.join(dirpath, f)) + else: + old_profraw_files = glob.glob('*.profraw') + for f in old_profraw_files: + os.remove(f) with TemporaryDirectory() as profilePath: # TODO: refactor this into mozprofile profile_data_dir = os.path.join(build.topsrcdir, "testing", "profiles") with open(os.path.join(profile_data_dir, "profiles.json"), "r") as fh: base_profiles = json.load(fh)["profileserver"] prefpaths = [ @@ -207,16 +220,20 @@ if __name__ == "__main__": # Try to move the crash reports to the artifacts even if Firefox appears # to exit successfully, in case there's a crash that doesn't set the # return code to non-zero for some reason. if get_crashreports(profilePath, name="Firefox exited successfully?") != 0: print("Firefox exited successfully, but produced a crashreport") sys.exit(1) + print('Copying profile data....') + os.system('pwd'); + os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); + llvm_profdata = env.get("LLVM_PROFDATA") if llvm_profdata: profraw_files = glob.glob("*.profraw") if not profraw_files: print( "Could not find profraw files in the current directory: %s" % os.getcwd() ) diff --git a/build/unix/mozconfig.unix b/build/unix/mozconfig.unix --- a/build/unix/mozconfig.unix +++ b/build/unix/mozconfig.unix @@ -1,14 +1,23 @@ . "$topsrcdir/build/mozconfig.common" if [ -n "$FORCE_GCC" ]; then CC="$MOZ_FETCHES_DIR/gcc/bin/gcc" CXX="$MOZ_FETCHES_DIR/gcc/bin/g++" + if [ -n "$MOZ_PGO" ]; then + if [ -z "$USE_ARTIFACT" ]; then + ac_add_options --enable-lto + fi + export AR="$topsrcdir/gcc/bin/gcc-ar" + export NM="$topsrcdir/gcc/bin/gcc-nm" + export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib" + fi + # We want to make sure we use binutils and other binaries in the tooltool # package. mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH" else # For some builds we don't want to have Clang based static-analysis activated if [ -z "$DISABLE_CLANG_PLUGIN" ]; then export ENABLE_CLANG_PLUGIN=1 fi diff --git a/extensions/spellcheck/src/moz.build b/extensions/spellcheck/src/moz.build --- a/extensions/spellcheck/src/moz.build +++ b/extensions/spellcheck/src/moz.build @@ -26,8 +26,10 @@ LOCAL_INCLUDES += [ ] EXPORTS.mozilla += [ "mozInlineSpellChecker.h", "mozSpellChecker.h", ] if CONFIG["CC_TYPE"] in ("clang", "gcc"): CXXFLAGS += ["-Wno-error=shadow"] + +CXXFLAGS += ['-fno-devirtualize'] diff --git a/toolkit/components/terminator/nsTerminator.cpp b/toolkit/components/terminator/nsTerminator.cpp --- a/toolkit/components/terminator/nsTerminator.cpp +++ b/toolkit/components/terminator/nsTerminator.cpp @@ -451,16 +451,21 @@ void nsTerminator::StartWatchdog() { // Defend against overflow crashAfterMS = INT32_MAX; } else { crashAfterMS *= scaleUp; } } #endif + // Disable watchdog for PGO train builds - writting profile information at + // exit may take time and it is better to make build hang rather than + // silently produce poorly performing binary. + crashAfterMS = INT32_MAX; + UniquePtr<Options> options(new Options()); const PRIntervalTime ticksDuration = PR_MillisecondsToInterval(HEARTBEAT_INTERVAL_MS); options->crashAfterTicks = crashAfterMS / ticksDuration; // Handle systems where ticksDuration is greater than crashAfterMS. if (options->crashAfterTicks == 0) { options->crashAfterTicks = crashAfterMS / HEARTBEAT_INTERVAL_MS; } ++++++ mozilla-reduce-rust-debuginfo.patch ++++++ diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure --- a/build/moz.configure/rust.configure +++ b/build/moz.configure/rust.configure @@ -610,6 +610,7 @@ set_config("CARGO_PROFILE_DEV_OPT_LEVEL" "--enable-frame-pointers", path_remapping, path_remappings, + host ) def rust_compile_flags( opt_level, @@ -619,6 +620,7 @@ def rust_compile_flags( frame_pointers, path_remapping, path_remappings, + host ): # Cargo currently supports only two interesting profiles for building: # development and release. Those map (roughly) to --enable-debug and @@ -642,6 +644,8 @@ def rust_compile_flags( if debug_symbols: debug_info = "2" + if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64' or host.cpu == 's390x': + debug_info = '1' opts = [] ++++++ mozilla-s390-context.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1558452408 -7200 # Tue May 21 17:26:48 2019 +0200 # Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 # Parent 07fc9b9cd202263aef0043cf2dac3a754ce57c52 [mq]: mozilla-s390-context.patch diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp --- a/js/src/wasm/WasmSignalHandlers.cpp +++ b/js/src/wasm/WasmSignalHandlers.cpp @@ -149,16 +149,20 @@ using mozilla::DebugOnly; # define FP_sig(p) ((p)->uc_mcontext.mc_fp) # define SP_sig(p) ((p)->uc_mcontext.mc_i7) # endif # if defined(__linux__) && (defined(__ppc64__) || defined(__PPC64__) || \ defined(__ppc64le__) || defined(__PPC64LE__)) # define R01_sig(p) ((p)->uc_mcontext.gp_regs[1]) # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) # endif +# if defined(__linux__) && defined(__s390x__) +# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x]) +# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr) +# endif #elif defined(__NetBSD__) # define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) # define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP]) # define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP]) # define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) # define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) # define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) @@ -368,18 +372,23 @@ struct macos_aarch64_context { # define FP_sig(p) RFP_sig(p) # define SP_sig(p) RSP_sig(p) # define LR_sig(p) R31_sig(p) #elif defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \ defined(__PPC64LE__) # define PC_sig(p) R32_sig(p) # define SP_sig(p) R01_sig(p) # define FP_sig(p) R01_sig(p) +#elif defined(__s390x__) +# define PC_sig(p) PSWa_sig(p) +# define SP_sig(p) GR_sig(p, 15) +# define FP_sig(p) GR_sig(p, 11) #endif + static void SetContextPC(CONTEXT* context, uint8_t* pc) { #ifdef PC_sig *reinterpret_cast<uint8_t**>(&PC_sig(context)) = pc; #else MOZ_CRASH(); #endif } ++++++ mozilla-s390x-skia-gradient.patch ++++++ # HG changeset patch # Parent acf59ea86dd1d878b43920832093f082dcfc61c0 diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp --- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100 +++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100 @@ -7,7 +7,7 @@ #include "include/core/SkPaint.h" #include "src/shaders/gradients/Sk4fLinearGradient.h" - +#include "src/core/SkEndian.h" #include <cmath> #include <utility> @@ -28,6 +28,9 @@ while (n >= 4) { DstTraits<premul>::store4x(c0, c1, c2, c3, dst, bias0, bias1); +#ifdef SK_CPU_BENDIAN + SkEndianSwap32s(dst, 4); +#endif dst += 4; c0 = c0 + dc4; @@ -37,12 +40,23 @@ n -= 4; } if (n & 2) { - DstTraits<premul>::store(c0, dst++, bias0); - DstTraits<premul>::store(c1, dst++, bias1); + DstTraits<premul>::store(c0, dst, bias0); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif + ++dst; + DstTraits<premul>::store(c1, dst, bias1); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif + ++dst; c0 = c0 + dc2; } if (n & 1) { DstTraits<premul>::store(c0, dst, bias0); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif } } ++++++ mozilla-sandbox-fips.patch ++++++ From: meissner@suse.com, cgrobertson@suse.com Subject: allow Firefox to access addtional process information References: http://bugzilla.suse.com/show_bug.cgi?id=1167132 bsc#1174284 - Firefox tab just crashed in FIPS mode diff --git a/security/sandbox/linux/Sandbox.cpp b/security/sandbox/linux/Sandbox.cpp --- a/security/sandbox/linux/Sandbox.cpp +++ b/security/sandbox/linux/Sandbox.cpp @@ -655,6 +655,7 @@ void SetMediaPluginSandbox(const char* a auto files = new SandboxOpenedFiles(); files->Add(std::move(plugin)); files->Add("/dev/urandom", true); + files->Add("/dev/random", true); files->Add("/etc/ld.so.cache"); // Needed for NSS in clearkey. files->Add("/sys/devices/system/cpu/cpu0/tsc_freq_khz"); files->Add("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); diff --git a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp --- a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp +++ b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp @@ -318,6 +318,8 @@ void SandboxBrokerPolicyFactory::InitCon // Read permissions policy->AddPath(rdonly, "/dev/urandom"); + policy->AddPath(rdonly, "/dev/random"); + policy->AddPath(rdonly, "/proc/sys/crypto/fips_enabled"); policy->AddPath(rdonly, "/proc/cpuinfo"); policy->AddPath(rdonly, "/proc/meminfo"); policy->AddDir(rdonly, "/sys/devices/cpu"); @@ -768,6 +770,8 @@ SandboxBrokerPolicyFactory::GetSocketPro auto policy = MakeUnique<SandboxBroker::Policy>(); policy->AddPath(rdonly, "/dev/urandom"); + policy->AddPath(rdonly, "/dev/random"); + policy->AddPath(rdonly, "/proc/sys/crypto/fips_enabled"); policy->AddPath(rdonly, "/proc/cpuinfo"); policy->AddPath(rdonly, "/proc/meminfo"); policy->AddDir(rdonly, "/sys/devices/cpu"); ++++++ mozilla-silence-no-return-type.patch ++++++ ++++ 1239 lines (skipped) ++++++ mozilla.keyring ++++++ This file contains the PGP keys of various developers that work on Mozilla and its subprojects (such as Firefox and Thunderbird). Please realize that this file itself or the public key servers may be compromised. You are encouraged to validate the authenticity of these keys in an out-of-band manner. Mozilla users: pgp < KEY pub rsa4096 2015-07-17 [SC] 14F26682D0916CDD81E37B6D61B7B526D98F0353 uid [ full ] Mozilla Software Releases <release@mozilla.com> sub rsa4096 2015-07-17 [S] [expired: 2017-07-16] sub rsa4096 2017-06-22 [S] [expired: 2019-06-22] sub rsa4096 2019-05-30 [S] [expires: 2021-05-29] sub rsa4096 2021-05-17 [S] [expires: 2023-05-17] -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =81zK -----END PGP PUBLIC KEY BLOCK----- ++++++ mozilla.sh.in ++++++ #!/bin/sh # # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is mozilla.org Code. # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 1998 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Wolfgang Rosenauer <wolfgang.rosenauer@suse.de> # <wr@rosenauer.org> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** ## ## Usage: ## ## $ mozilla [args] ## ## This script is meant to run a mozilla program from the mozilla ## rpm installation. ## ## The script will setup all the environment voodoo needed to make ## mozilla work. cmdname=`basename $0` ## ## Variables ## MOZ_DIST_BIN="%PREFIX" MOZ_DIST_LIB="%PROGDIR" MOZ_APPNAME="%APPNAME" MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME" MOZ_LANGPACKS_DIR="$MOZ_DIST_LIB/langpacks" MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh" if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then [ -h "/usr/bin/$MOZ_APPNAME" ] && \ _link=$(readlink -f "/usr/bin/$MOZ_APPNAME") if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi else export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi MOZILLA_FIVE_HOME="$MOZ_DIST_LIB" export MOZILLA_FIVE_HOME LD_LIBRARY_PATH=$MOZ_DIST_LIB${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} export LD_LIBRARY_PATH # needed for SUN Java under Xorg >= 7.2 export LIBXCB_ALLOW_SLOPPY_LOCK=1 # disable Gnome crash dialog (doesn't make sense anyway) export GNOME_DISABLE_CRASH_DIALOG=1 # Wayland # Only supported on newer systems WAYLAND_SUPPORTED=%WAYLAND_SUPPORTED # $XDG_SESSION_TYPE should contain either x11 or wayland if [ $WAYLAND_SUPPORTED -eq 1 ] && [ "$XDG_SESSION_TYPE" = "wayland" ] && [ -z "$MOZ_ENABLE_WAYLAND" ]; then export MOZ_ENABLE_WAYLAND=1 fi ## ## Use D-Bus remote exclusively when there's Wayland display. ## if [ "$WAYLAND_DISPLAY" ]; then export MOZ_DBUS_REMOTE=1 fi # xinput2 (boo#1173320) source /etc/os-release if [ "$ID" = "opensuse-tumbleweed" ]; then export MOZ_USE_XINPUT2=1 fi ## ## To disable the use of Firefox localization handling for ## the home profile, set MOZ_DISABLE_LANGPACKS=1 ## in your environment before launching Firefox. ## currently disabled by default since langpacks ## are shipped as app sideloading addons ## # MOZ_DISABLE_LANGPACKS=1 export MOZ_DISABLE_LANGPACKS # ## ## Automatically installed langpacks are tracked by .suse-langpack-install ## config file. ## SUSE_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.suse-langpack-install" # MOZ_DISABLE_LANGPACKS disables language packs completely MOZILLA_DOWN=0 if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then if [ -x $MOZ_PROGRAM ]; then # Is firefox running? /bin/pidof %APPNAME% > /dev/null 2>&1 MOZILLA_DOWN=$? fi fi # Modify language pack configuration only when firefox is not running # and language packs are not disabled if [ $MOZILLA_DOWN -ne 0 ]; then # Clear already installed langpacks mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR if [ -f $SUSE_LANGPACK_CONFIG ]; then rm `cat $SUSE_LANGPACK_CONFIG` > /dev/null 2>&1 rm $SUSE_LANGPACK_CONFIG > /dev/null 2>&1 # remove all empty langpacks dirs while they block installation of langpacks rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1 fi # Get locale from system CURRENT_LOCALE=$LC_ALL CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES} CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG} # Try with a local variant first, then without a local variant SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g" | sed "s|\..*||g"` MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g" | sed "s|\..*||g"` function create_langpack_link() { local language=$* local langpack=langpack-${language}@firefox.mozilla.org.xpi if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack # If the target file is a symlink (the fallback langpack), # install the original file instead of the fallback one if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack` fi ln -s $MOZ_LANGPACKS_DIR/$langpack \ $MOZ_EXTENSIONS_PROFILE_DIR/$langpack echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $SUSE_LANGPACK_CONFIG return 0 fi return 1 } create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true fi moz_debug=0 script_args="" pass_arg_count=0 while [ $# -gt $pass_arg_count ] do case "$1" in -d | --debugger) moz_debugger=$2; if [ "${moz_debugger}" != "" ]; then shift 2 moz_debug=1 else echo "-d requires an argument" exit 1 fi ;; *) # Move the unrecognized argument to the end of the list. arg="$1" shift set -- "$@" "$arg" pass_arg_count=`expr $pass_arg_count + 1` ;; esac done if [ $moz_debug -eq 1 ]; then tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; } trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15 echo "set args ${1+"$@"}" > $tmpfile echo "run" >> $tmpfile echo "$moz_debugger $MOZ_PROGRAM -x $tmpfile" exec $moz_debugger "$MOZ_PROGRAM" -x $tmpfile else exec $MOZ_PROGRAM "$@" fi ++++++ spellcheck.js ++++++ pref("spellchecker.dictionary_path", "/usr/share/myspell"); ++++++ tar_stamps ++++++ PRODUCT="firefox" CHANNEL="release" VERSION="91.2.0" VERSION_SUFFIX="esr" PREV_VERSION="91.1.0" PREV_VERSION_SUFFIX="esr" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-esr91" RELEASE_TAG="5d4ad120b8d41af6d9452a0572e774865f110e0e" RELEASE_TIMESTAMP="20210927140538"
participants (1)
-
Source-Sync