mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-30 22:56:33 +00:00
Release 2019.02-rc1
-----BEGIN PGP SIGNATURE----- iHAEABECADAWIQSrB9gG0s50H7iG7lCwJbqLWcNjGQUCXGPPyRIcamFjbWV0QHVj bGliYy5vcmcACgkQsCW6i1nDYxlq/ACg0grNI9aHdoTLXdIehHDes+9T+v4AoKaU g4JR3RkQ3gePPFlrwnJgBpRJ =le0M -----END PGP SIGNATURE----- Merge tag '2019.02-rc1' into next Release 2019.02-rc1
This commit is contained in:
commit
c79fd35241
150
CHANGES
150
CHANGES
@ -1,3 +1,153 @@
|
|||||||
|
2019.02-rc1, released February 13th, 2019
|
||||||
|
|
||||||
|
Fixes all over the tree and new features.
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies:
|
||||||
|
|
||||||
|
Require Python >= 2.7 as it is needed for E.G. building
|
||||||
|
libglib2.
|
||||||
|
|
||||||
|
Ensure GNU gzip is used for reproducible tarballs (instead of
|
||||||
|
pigz)
|
||||||
|
|
||||||
|
|
||||||
|
Infrastucture:
|
||||||
|
|
||||||
|
Ensure the PLATFORM and OS environment variables are not set,
|
||||||
|
as they cause build issues for some packages.
|
||||||
|
|
||||||
|
The package list infrastructure now correctly handles packages
|
||||||
|
installing files with old mtime.
|
||||||
|
|
||||||
|
Add a config option to force all optional host utilities to be
|
||||||
|
built, even if suitable versions are available on the build
|
||||||
|
machine.
|
||||||
|
|
||||||
|
graph-build-time: Also show time spent downloading
|
||||||
|
|
||||||
|
Download: fixes for SSH/SCP support
|
||||||
|
|
||||||
|
Ensure user provided permissions override permissions from
|
||||||
|
packages.
|
||||||
|
|
||||||
|
SDK: Fix handling of relative symlinks (targets starting with
|
||||||
|
'.' or '..')
|
||||||
|
|
||||||
|
BR2_SYSTEM_DEFAULT_PATH setting to customize the default path
|
||||||
|
for processes.
|
||||||
|
|
||||||
|
The custom skeleton logic will now populate the needed /bin,
|
||||||
|
/lib, /sbin directories/symlinks if not present. Merged /usr
|
||||||
|
can now be used with a custom skeleton.
|
||||||
|
|
||||||
|
Rootfs overlays can now override symbolic links from
|
||||||
|
packages. This was disabled to ensure the correct symbolic
|
||||||
|
links are present when merged /usr is used. Instead validate
|
||||||
|
that the rootfs overlays do not include invalid /bin, /sbin
|
||||||
|
and /lib entries.
|
||||||
|
|
||||||
|
The waf infrastructure now support the <pkg>_SUBDIR variable,
|
||||||
|
similar to the other package types.
|
||||||
|
|
||||||
|
cmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake
|
||||||
|
|
||||||
|
Various improvements to the meson infrastructure.
|
||||||
|
|
||||||
|
Luarocks: A Buildroot addon has been added to automate
|
||||||
|
creating a Buildroot package from luarocks, similar to
|
||||||
|
scancpan and scanpypi.
|
||||||
|
|
||||||
|
scanpypi: protect against zip-slip vulnerability in zip/tar
|
||||||
|
handling
|
||||||
|
|
||||||
|
check-package: fix Python 3 support
|
||||||
|
|
||||||
|
get-developers: Fix behaviour when called from elsewhere than
|
||||||
|
the toplevel directory.
|
||||||
|
|
||||||
|
pkg-stats: Show latest upstream version of each package, based
|
||||||
|
on data from release-monitoring.org
|
||||||
|
|
||||||
|
kconfig: Fix for make linux-menuconfig / uboot-menuconfig from
|
||||||
|
a clean tree when ccache is enabled.
|
||||||
|
|
||||||
|
Default to sha256 password encoding, drop md5 support.
|
||||||
|
|
||||||
|
|
||||||
|
Architecture:
|
||||||
|
|
||||||
|
Support for RISC-V 32bit architecture, ARM A55, 75 and Saphira
|
||||||
|
variants, MIPS support for mips32r3, mips64r3 and Marvell
|
||||||
|
Octeon II/III variants.
|
||||||
|
|
||||||
|
|
||||||
|
Toolchain:
|
||||||
|
|
||||||
|
ARC toolchain 2018.09, ARM 8.2-2018.11, Codescape IMG/MTI MIPS
|
||||||
|
2018.09-02, MUSL 1.1.21, GCC 6.5.0 / 7.4.0, GDB 8.2.1
|
||||||
|
|
||||||
|
|
||||||
|
Packages:
|
||||||
|
|
||||||
|
openssl: Bump to 1.1.1x series, bringing TLSv1.3 support and
|
||||||
|
long term support.
|
||||||
|
|
||||||
|
fftw: Split into fftw-{single,double,long-double,quad}
|
||||||
|
packages for the different data precision options.
|
||||||
|
|
||||||
|
libcurl: Now has explicit TLS backend selection options.
|
||||||
|
|
||||||
|
linux: Support building device tree blobs with the -@ option
|
||||||
|
for device tree overlays.
|
||||||
|
|
||||||
|
weston: The weston-imx i.MX variant is now used when
|
||||||
|
imx-gpu-viv is enabled
|
||||||
|
|
||||||
|
pkgconf: Update to 1.5.3, which brings support for
|
||||||
|
--define-prefix (used by GStreamer)
|
||||||
|
|
||||||
|
Add host-python3-setuptools package to handle host python
|
||||||
|
packages needing python3 with setuptools support.
|
||||||
|
|
||||||
|
|
||||||
|
New defconfigs: Aarch64 EFI, Orangepi one plus, Orangepi lite
|
||||||
|
2, QEMU RISC-V 32bit virt, Rock64
|
||||||
|
|
||||||
|
|
||||||
|
New packages: brcm-patchram-plus, clinfo, cunit, docker-cli,
|
||||||
|
erlang-p1-eimp, exempi, fail2ban, fftw-double,
|
||||||
|
fftw-double-long, fftw-quad, fftw-single, gerbera, grpc,
|
||||||
|
gst1-shark, intel-gmmlib, iwd, kf5-kcoreaddons, libeastl,
|
||||||
|
libpackagekite, libtorrent-rasterbar, lua-std-debug,
|
||||||
|
lua-std-normalize, mini-snmpd, netsurf, pamtester, pcm-tools,
|
||||||
|
python-aiodns, python-aiohttp, python-aiohttp-jinja2,
|
||||||
|
python-aiohttp-remotes, python-aiohttp-security,
|
||||||
|
python-aiohttp-session, python-aiohttpd-sse, python-aiojobs,
|
||||||
|
python-cchardet, python-pycares, python-sentry-sdk,
|
||||||
|
python-wtforms, python3-setuptools, rcw, rtc-tools, shim,
|
||||||
|
utp_com, vmtouch, websocketpp
|
||||||
|
|
||||||
|
Removed packages: fftw, lua 5.2.x, luacrypto, perl-time-hires,
|
||||||
|
python-pyqt, qt, qtuio, tn5250
|
||||||
|
|
||||||
|
Issues resolved (http://bugs.uclibc.org):
|
||||||
|
|
||||||
|
#10851: Patch to handle numpad Enter key properly
|
||||||
|
#11066: x11r7 X11 S40xorg leads to a black screen on QEMU x86..
|
||||||
|
#11126: Bash Shell Programming using Buildroot
|
||||||
|
#11426: pps-tools bash dependency
|
||||||
|
#11476: stdio2.h error invalid use of __builtin_va_arg_pack
|
||||||
|
#11536: dt-utils building fails with glibc 2.28
|
||||||
|
#11546: open-vm-tools with glibc 2.28
|
||||||
|
#11566: Fix init script
|
||||||
|
#11576: Unable to start apache with event MPM on raspberry pi 3
|
||||||
|
#11591: [pkgconf 1.5.3] xserver OpenGL support is missing
|
||||||
|
#11606: libjpeg has no Config.in
|
||||||
|
#11616: 2018.02.09 fails to build libzlib with full RELRO..
|
||||||
|
#11656: Custom device tree and u-boot boot.scr not integrated..
|
||||||
|
#11666: Touchscreen with (Py)Qt5 should use tslib instead of evdev
|
||||||
|
|
||||||
2018.11.2, Released January 30th, 2019
|
2018.11.2, Released January 30th, 2019
|
||||||
|
|
||||||
Important / security related fixes.
|
Important / security related fixes.
|
||||||
|
@ -207,12 +207,6 @@ config BR2_PACKAGE_GNURADIO_QTGUI
|
|||||||
help
|
help
|
||||||
The gr-qtgui option was removed.
|
The gr-qtgui option was removed.
|
||||||
|
|
||||||
config BR2_PACKAGE_MONGODB
|
|
||||||
bool "mongodb package removed"
|
|
||||||
select BR2_LEGACY
|
|
||||||
help
|
|
||||||
The mongodb package was removed.
|
|
||||||
|
|
||||||
config BR2_PACKAGE_LUACRYPTO
|
config BR2_PACKAGE_LUACRYPTO
|
||||||
bool "luacrypto package removed"
|
bool "luacrypto package removed"
|
||||||
select BR2_LEGACY
|
select BR2_LEGACY
|
||||||
|
@ -797,6 +797,7 @@ F: package/libxslt/
|
|||||||
F: package/mbedtls/
|
F: package/mbedtls/
|
||||||
F: package/minissdpd/
|
F: package/minissdpd/
|
||||||
F: package/minizip/
|
F: package/minizip/
|
||||||
|
F: package/mongodb/
|
||||||
F: package/motion/
|
F: package/motion/
|
||||||
F: package/mutt/
|
F: package/mutt/
|
||||||
F: package/ncmpc/
|
F: package/ncmpc/
|
||||||
|
4
Makefile
4
Makefile
@ -92,9 +92,9 @@ all:
|
|||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
|
||||||
# Set and export the version string
|
# Set and export the version string
|
||||||
export BR2_VERSION := 2019.02-git
|
export BR2_VERSION := 2019.02-rc1
|
||||||
# Actual time the release is cut (for reproducible builds)
|
# Actual time the release is cut (for reproducible builds)
|
||||||
BR2_VERSION_EPOCH = 1543701000
|
BR2_VERSION_EPOCH = 1550044800
|
||||||
|
|
||||||
# Save running make version since it's clobbered by the make package
|
# Save running make version since it's clobbered by the make package
|
||||||
RUNNING_MAKE_VERSION := $(MAKE_VERSION)
|
RUNNING_MAKE_VERSION := $(MAKE_VERSION)
|
||||||
|
@ -7,4 +7,4 @@ BOARD_DIR=$(dirname "$0")
|
|||||||
cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg"
|
cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg"
|
||||||
|
|
||||||
# Copy grub 1st stage to binaries, required for genimage
|
# Copy grub 1st stage to binaries, required for genimage
|
||||||
cp -f "$HOST_DIR/lib/grub/i387-pc/boot.img" "$BINARIES_DIR"
|
cp -f "$HOST_DIR/lib/grub/i386-pc/boot.img" "$BINARIES_DIR"
|
||||||
|
@ -1,10 +1,30 @@
|
|||||||
Signed-Off-by: Waldemar Brodkorb <wbx@openadk.org>
|
From 4ac4324dcdaf237aa34545b3795acb2e5c42d10e Mon Sep 17 00:00:00 2001
|
||||||
From LKML.
|
From: Waldemar Brodkorb <wbx@openadk.org>
|
||||||
|
Date: Fri, 1 Feb 2019 11:36:20 +0100
|
||||||
|
Subject: [PATCH] arm-versatile-nommu: Linux patch
|
||||||
|
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/Kconfig linux-4.15.13/arch/arm/Kconfig
|
Originally made by Waldemar Brodkorb <wbx@openadk.org> from LKML.
|
||||||
--- linux-4.15.13.orig/arch/arm/Kconfig 2018-03-24 11:02:53.000000000 +0100
|
|
||||||
+++ linux-4.15.13/arch/arm/Kconfig 2018-04-01 03:47:33.415078244 +0100
|
Signed-Off-by: Waldemar Brodkorb <wbx@openadk.org>
|
||||||
@@ -355,6 +355,17 @@
|
[Gerome: reformated as a Git patch]
|
||||||
|
Signed-off-by: Gerome Burlats <gerome.burlats@smile.fr>
|
||||||
|
[Romain: fix Waldemar's authorship in Git patch]
|
||||||
|
Signed-off-by: Romain Naour <romain.naour@smile.fr>
|
||||||
|
---
|
||||||
|
arch/arm/Kconfig | 11 +++++++++++
|
||||||
|
arch/arm/Kconfig.debug | 3 ++-
|
||||||
|
arch/arm/include/asm/mach/map.h | 1 +
|
||||||
|
arch/arm/mach-versatile/Kconfig | 5 +++--
|
||||||
|
arch/arm/mach-versatile/Makefile.boot | 3 +++
|
||||||
|
arch/arm/mach-versatile/versatile_dt.c | 4 ++++
|
||||||
|
6 files changed, 24 insertions(+), 3 deletions(-)
|
||||||
|
create mode 100644 arch/arm/mach-versatile/Makefile.boot
|
||||||
|
|
||||||
|
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||||
|
index e8cd55a5b04c..fc2dbff70394 100644
|
||||||
|
--- a/arch/arm/Kconfig
|
||||||
|
+++ b/arch/arm/Kconfig
|
||||||
|
@@ -353,6 +353,17 @@ config ARM_SINGLE_ARMV7M
|
||||||
select SPARSE_IRQ
|
select SPARSE_IRQ
|
||||||
select USE_OF
|
select USE_OF
|
||||||
|
|
||||||
@ -22,10 +42,11 @@ diff -Nur linux-4.15.13.orig/arch/arm/Kconfig linux-4.15.13/arch/arm/Kconfig
|
|||||||
config ARCH_EBSA110
|
config ARCH_EBSA110
|
||||||
bool "EBSA-110"
|
bool "EBSA-110"
|
||||||
select ARCH_USES_GETTIMEOFFSET
|
select ARCH_USES_GETTIMEOFFSET
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/Kconfig.debug linux-4.15.13/arch/arm/Kconfig.debug
|
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
|
||||||
--- linux-4.15.13.orig/arch/arm/Kconfig.debug 2018-03-24 11:02:53.000000000 +0100
|
index f6fcb8a79889..92fc637d3db8 100644
|
||||||
+++ linux-4.15.13/arch/arm/Kconfig.debug 2018-04-01 03:47:33.416078232 +0100
|
--- a/arch/arm/Kconfig.debug
|
||||||
@@ -1795,7 +1795,8 @@
|
+++ b/arch/arm/Kconfig.debug
|
||||||
|
@@ -1843,7 +1843,8 @@ config DEBUG_UNCOMPRESS
|
||||||
config UNCOMPRESS_INCLUDE
|
config UNCOMPRESS_INCLUDE
|
||||||
string
|
string
|
||||||
default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
|
default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
|
||||||
@ -35,10 +56,11 @@ diff -Nur linux-4.15.13.orig/arch/arm/Kconfig.debug linux-4.15.13/arch/arm/Kconf
|
|||||||
default "mach/uncompress.h"
|
default "mach/uncompress.h"
|
||||||
|
|
||||||
config EARLY_PRINTK
|
config EARLY_PRINTK
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/include/asm/mach/map.h linux-4.15.13/arch/arm/include/asm/mach/map.h
|
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
|
||||||
--- linux-4.15.13.orig/arch/arm/include/asm/mach/map.h 2018-03-24 11:02:53.000000000 +0100
|
index 9b7c328fb207..b1fe9c8b5c3e 100644
|
||||||
+++ linux-4.15.13/arch/arm/include/asm/mach/map.h 2018-04-01 03:47:17.587276119 +0100
|
--- a/arch/arm/include/asm/mach/map.h
|
||||||
@@ -62,6 +62,7 @@
|
+++ b/arch/arm/include/asm/mach/map.h
|
||||||
|
@@ -62,6 +62,7 @@ extern int ioremap_page(unsigned long virt, unsigned long phys,
|
||||||
#else
|
#else
|
||||||
#define iotable_init(map,num) do { } while (0)
|
#define iotable_init(map,num) do { } while (0)
|
||||||
#define vm_reserve_area_early(a,s,c) do { } while (0)
|
#define vm_reserve_area_early(a,s,c) do { } while (0)
|
||||||
@ -46,9 +68,10 @@ diff -Nur linux-4.15.13.orig/arch/arm/include/asm/mach/map.h linux-4.15.13/arch/
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/mach-versatile/Kconfig linux-4.15.13/arch/arm/mach-versatile/Kconfig
|
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
|
||||||
--- linux-4.15.13.orig/arch/arm/mach-versatile/Kconfig 2018-03-24 11:02:53.000000000 +0100
|
index f5c275434d6c..06ad999d5978 100644
|
||||||
+++ linux-4.15.13/arch/arm/mach-versatile/Kconfig 2018-04-01 03:47:33.417078219 +0100
|
--- a/arch/arm/mach-versatile/Kconfig
|
||||||
|
+++ b/arch/arm/mach-versatile/Kconfig
|
||||||
@@ -1,7 +1,8 @@
|
@@ -1,7 +1,8 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
config ARCH_VERSATILE
|
config ARCH_VERSATILE
|
||||||
@ -60,16 +83,19 @@ diff -Nur linux-4.15.13.orig/arch/arm/mach-versatile/Kconfig linux-4.15.13/arch/
|
|||||||
select ARM_AMBA
|
select ARM_AMBA
|
||||||
select ARM_TIMER_SP804
|
select ARM_TIMER_SP804
|
||||||
select ARM_VIC
|
select ARM_VIC
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/mach-versatile/Makefile.boot linux-4.15.13/arch/arm/mach-versatile/Makefile.boot
|
diff --git a/arch/arm/mach-versatile/Makefile.boot b/arch/arm/mach-versatile/Makefile.boot
|
||||||
--- linux-4.15.13.orig/arch/arm/mach-versatile/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
|
new file mode 100644
|
||||||
+++ linux-4.15.13/arch/arm/mach-versatile/Makefile.boot 2018-04-01 03:47:25.644175394 +0100
|
index 000000000000..eacfc3f5c33e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/mach-versatile/Makefile.boot
|
||||||
@@ -0,0 +1,3 @@
|
@@ -0,0 +1,3 @@
|
||||||
+# Empty file waiting for deletion once Makefile.boot isn't needed any more.
|
+# Empty file waiting for deletion once Makefile.boot isn't needed any more.
|
||||||
+# Patch waits for application at
|
+# Patch waits for application at
|
||||||
+# http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7889/1 .
|
+# http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7889/1 .
|
||||||
diff -Nur linux-4.15.13.orig/arch/arm/mach-versatile/versatile_dt.c linux-4.15.13/arch/arm/mach-versatile/versatile_dt.c
|
diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c
|
||||||
--- linux-4.15.13.orig/arch/arm/mach-versatile/versatile_dt.c 2018-03-24 11:02:53.000000000 +0100
|
index 3c8d39c12909..8cfa05a37295 100644
|
||||||
+++ linux-4.15.13/arch/arm/mach-versatile/versatile_dt.c 2018-04-01 03:47:10.913359555 +0100
|
--- a/arch/arm/mach-versatile/versatile_dt.c
|
||||||
|
+++ b/arch/arm/mach-versatile/versatile_dt.c
|
||||||
@@ -37,7 +37,11 @@
|
@@ -37,7 +37,11 @@
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
@ -82,3 +108,6 @@ diff -Nur linux-4.15.13.orig/arch/arm/mach-versatile/versatile_dt.c linux-4.15.1
|
|||||||
#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
|
#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
--
|
||||||
|
2.14.5
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ CONFIG_XTENSA_VARIANT_CUSTOM_NAME="dc233c"
|
|||||||
# CONFIG_XTENSA_VARIANT_MMU is not set
|
# CONFIG_XTENSA_VARIANT_MMU is not set
|
||||||
CONFIG_XTENSA_UNALIGNED_USER=y
|
CONFIG_XTENSA_UNALIGNED_USER=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_MEMMAP_CACHEATTR=0x2cccccc7
|
||||||
CONFIG_KERNEL_LOAD_ADDRESS=0x00003000
|
CONFIG_KERNEL_LOAD_ADDRESS=0x00003000
|
||||||
# CONFIG_PCI is not set
|
# CONFIG_PCI is not set
|
||||||
CONFIG_XTENSA_PLATFORM_XTFPGA=y
|
CONFIG_XTENSA_PLATFORM_XTFPGA=y
|
||||||
|
@ -11,13 +11,13 @@ BR2_TARGET_ROOTFS_EXT2=y
|
|||||||
BR2_TARGET_ROOTFS_EXT2_4=y
|
BR2_TARGET_ROOTFS_EXT2_4=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
|
||||||
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux.config"
|
||||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||||
|
@ -21,13 +21,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-nommu.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-nommu.config"
|
||||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||||
|
@ -13,13 +13,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
|
BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
|
||||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||||
BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
|
BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux.config"
|
||||||
BR2_LINUX_KERNEL_LINUX_BIN=y
|
BR2_LINUX_KERNEL_LINUX_BIN=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux.config"
|
||||||
BR2_LINUX_KERNEL_LINUX_BIN=y
|
BR2_LINUX_KERNEL_LINUX_BIN=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
BR2_nios2=y
|
BR2_nios2=y
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_DEFCONFIG="10m50"
|
BR2_LINUX_KERNEL_DEFCONFIG="10m50"
|
||||||
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux.fragment"
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux.fragment"
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
@ -5,12 +5,12 @@ BR2_or1k=y
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4,16 series
|
# Linux headers same as kernel, a 4,19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux.config"
|
||||||
|
@ -6,12 +6,12 @@ BR2_powerpc_e5500=y
|
|||||||
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
|
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
|
||||||
|
|
||||||
# Linux headers same as the kernel
|
# Linux headers same as the kernel
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp"
|
BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp"
|
||||||
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc64-e5500/linux.fragment"
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc64-e5500/linux.fragment"
|
||||||
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
|
@ -10,12 +10,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_DEFCONFIG="pseries"
|
BR2_LINUX_KERNEL_DEFCONFIG="pseries"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -10,12 +10,12 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_DEFCONFIG="pseries_le"
|
BR2_LINUX_KERNEL_DEFCONFIG="pseries_le"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -9,13 +9,13 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -6,8 +6,8 @@ BR2_powerpc_440=y
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Use soft float
|
# Use soft float
|
||||||
BR2_SOFT_FLOAT=y
|
BR2_SOFT_FLOAT=y
|
||||||
@ -15,7 +15,7 @@ BR2_SOFT_FLOAT=y
|
|||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux.config"
|
||||||
BR2_LINUX_KERNEL_VMLINUX=y
|
BR2_LINUX_KERNEL_VMLINUX=y
|
||||||
|
@ -11,13 +11,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttySC1"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Linux kernel
|
# Linux kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux.config"
|
||||||
BR2_LINUX_KERNEL_ZIMAGE=y
|
BR2_LINUX_KERNEL_ZIMAGE=y
|
||||||
|
@ -10,13 +10,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttySC1"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Linux kernel
|
# Linux kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux.config"
|
||||||
BR2_LINUX_KERNEL_ZIMAGE=y
|
BR2_LINUX_KERNEL_ZIMAGE=y
|
||||||
|
@ -9,12 +9,12 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Linux kernel
|
# Linux kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux.config"
|
||||||
|
@ -9,12 +9,12 @@ BR2_SYSTEM_DHCP="eth0"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Linux kernel
|
# Linux kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config"
|
||||||
|
@ -9,12 +9,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="tty1"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
|
||||||
|
@ -10,12 +10,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="tty1"
|
|||||||
BR2_TARGET_ROOTFS_EXT2=y
|
BR2_TARGET_ROOTFS_EXT2=y
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux.config"
|
||||||
|
@ -11,13 +11,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux.config"
|
||||||
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
|
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
|
||||||
|
@ -15,13 +15,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
|
|||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
|
||||||
# Linux headers same as kernel, a 4.16 series
|
# Linux headers same as kernel, a 4.19 series
|
||||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||||
|
|
||||||
# Kernel
|
# Kernel
|
||||||
BR2_LINUX_KERNEL=y
|
BR2_LINUX_KERNEL=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.16"
|
||||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-nommu.config"
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-nommu.config"
|
||||||
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
|
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
|
||||||
|
@ -75,38 +75,38 @@
|
|||||||
<p><a href="/downloads/buildroot-2018.11.2.tar.bz2.sign">PGP signature</a></p>
|
<p><a href="/downloads/buildroot-2018.11.2.tar.bz2.sign">PGP signature</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
<h3 style="text-align: center;">Latest release candidate: <b>2018.11-rc3</b></h3>
|
<h3 style="text-align: center;">Latest release candidate: <b>2019.02-rc1</b></h3>
|
||||||
<div class="row mt centered">
|
<div class="row mt centered">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
|
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
|
||||||
<div class="flipper">
|
<div class="flipper">
|
||||||
<div class="front">
|
<div class="front">
|
||||||
<a href="/downloads/buildroot-2018.11-rc3.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
|
<a href="/downloads/buildroot-2019.02-rc1.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="back">
|
<div class="back">
|
||||||
<a href="/downloads/buildroot-2018.11-rc3.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
|
<a href="/downloads/buildroot-2019.02-rc1.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3><a href="/downloads/buildroot-2018.11-rc3.tar.gz">buildroot-2018.11-rc3.tar.gz</a></h3>
|
<h3><a href="/downloads/buildroot-2019.02-rc1.tar.gz">buildroot-2019.02-rc1.tar.gz</a></h3>
|
||||||
<p><a href="/downloads/buildroot-2018.11-rc3.tar.gz.sign">PGP signature</a></p>
|
<p><a href="/downloads/buildroot-2019.02-rc1.tar.gz.sign">PGP signature</a></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
|
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
|
||||||
<div class="flipper">
|
<div class="flipper">
|
||||||
<div class="front">
|
<div class="front">
|
||||||
<a href="/downloads/buildroot-2018.11-rc3.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
|
<a href="/downloads/buildroot-2019.02-rc1.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="back">
|
<div class="back">
|
||||||
<a href="/downloads/buildroot-2018.11-rc3.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
|
<a href="/downloads/buildroot-2019.02-rc1.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3><a href="/downloads/buildroot-2018.11-rc3.tar.bz2">buildroot-2018.11-rc3.tar.bz2</a></h3>
|
<h3><a href="/downloads/buildroot-2019.02-rc1.tar.bz2">buildroot-2019.02-rc1.tar.bz2</a></h3>
|
||||||
<p><a href="/downloads/buildroot-2018.11-rc3.tar.bz2.sign">PGP signature</a></p>
|
<p><a href="/downloads/buildroot-2019.02-rc1.tar.bz2.sign">PGP signature</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -114,7 +114,7 @@
|
|||||||
<a href="/downloads/">http://buildroot.net/downloads/</a>.
|
<a href="/downloads/">http://buildroot.net/downloads/</a>.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
-->
|
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">Source code</div>
|
<div class="panel-heading">Source code</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
@ -9,6 +9,29 @@
|
|||||||
<h2>News</h2>
|
<h2>News</h2>
|
||||||
<ul class="timeline">
|
<ul class="timeline">
|
||||||
|
|
||||||
|
<li class="timeline-inverted">
|
||||||
|
<div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
|
||||||
|
<div class="timeline-panel">
|
||||||
|
<div class="timeline-heading">
|
||||||
|
<h4 class="timeline-title">2019.02-rc1 released</h4>
|
||||||
|
<p><small class="text-muted"><i class="glyphicon glyphicon-time"></i>13 February 2019</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="timeline-body">
|
||||||
|
<p>We have a new release candidate! Lots of changes all over the
|
||||||
|
tree, see the
|
||||||
|
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02-rc1">CHANGES</a>
|
||||||
|
file for details.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
|
||||||
|
<a href="/downloads/buildroot-2019.02-rc1.tar.bz2">2019.02-rc1
|
||||||
|
release candidate</a>, and report any problems found to the
|
||||||
|
<a href="support.html">mailing list</a> or
|
||||||
|
<a href="https://bugs.buildroot.org">bug tracker</a>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
|
<div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
|
||||||
<div class="timeline-panel">
|
<div class="timeline-panel">
|
||||||
|
@ -1215,6 +1215,7 @@ menu "Database"
|
|||||||
source "package/leveldb/Config.in"
|
source "package/leveldb/Config.in"
|
||||||
source "package/libgit2/Config.in"
|
source "package/libgit2/Config.in"
|
||||||
source "package/libpqxx/Config.in"
|
source "package/libpqxx/Config.in"
|
||||||
|
source "package/mongodb/Config.in"
|
||||||
source "package/mysql/Config.in"
|
source "package/mysql/Config.in"
|
||||||
source "package/postgresql/Config.in"
|
source "package/postgresql/Config.in"
|
||||||
source "package/redis/Config.in"
|
source "package/redis/Config.in"
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
From 8ff9d421372a7cb780fbafd8b1d556ee549bf109 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
||||||
Date: Fri, 8 Feb 2019 23:21:04 +0100
|
|
||||||
Subject: [PATCH] src/main.c: fix build on SPARC
|
|
||||||
|
|
||||||
On SPARC, the definitions of B2500000, B3000000, B3500000 and B4000000
|
|
||||||
are not necessarily available, so use those values only if defined in
|
|
||||||
the kernel headers.
|
|
||||||
|
|
||||||
It fixes SPARC build failures such as:
|
|
||||||
main.c:382:13: error: 'B2500000' undeclared here (not in a function)
|
|
||||||
{ 2500000, B2500000 },
|
|
||||||
^~~~~~~~
|
|
||||||
main.c:383:13: error: 'B3000000' undeclared here (not in a function)
|
|
||||||
{ 3000000, B3000000 },
|
|
||||||
^~~~~~~~
|
|
||||||
main.c:385:13: error: 'B3500000' undeclared here (not in a function)
|
|
||||||
{ 3500000, B3500000 },
|
|
||||||
^~~~~~~~
|
|
||||||
main.c:386:13: error: 'B4000000' undeclared here (not in a function)
|
|
||||||
{ 4000000, B4000000 }
|
|
||||||
|
|
||||||
Fixes:
|
|
||||||
- http://autobuild.buildroot.org/results/f7012c08c935c3a6ccae50b84170190af5cd5cba
|
|
||||||
|
|
||||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
||||||
[Upstream status: https://github.com/AsteroidOS/brcm-patchram-plus/pull/1]
|
|
||||||
---
|
|
||||||
src/main.c | 18 +++++++++++++-----
|
|
||||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/main.c b/src/main.c
|
|
||||||
index 040cfe1..17c5191 100644
|
|
||||||
--- a/src/main.c
|
|
||||||
+++ b/src/main.c
|
|
||||||
@@ -378,12 +378,20 @@ tBaudRates baud_rates[] = {
|
|
||||||
{ 1000000, B1000000 },
|
|
||||||
{ 1152000, B1152000 },
|
|
||||||
{ 1500000, B1500000 },
|
|
||||||
- { 2000000, B2000000 },
|
|
||||||
- { 2500000, B2500000 },
|
|
||||||
- { 3000000, B3000000 },
|
|
||||||
+ { 2000000, B2000000 }
|
|
||||||
+#ifdef B2500000
|
|
||||||
+ ,{ 2500000, B2500000 }
|
|
||||||
+#endif
|
|
||||||
+#ifdef B3000000
|
|
||||||
+ ,{ 3000000, B3000000 }
|
|
||||||
+#endif
|
|
||||||
#ifndef __CYGWIN__
|
|
||||||
- { 3500000, B3500000 },
|
|
||||||
- { 4000000, B4000000 }
|
|
||||||
+#ifdef B3500000
|
|
||||||
+ ,{ 3500000, B3500000 }
|
|
||||||
+#endif
|
|
||||||
+#ifdef B4000000
|
|
||||||
+ ,{ 4000000, B4000000 }
|
|
||||||
+#endif
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
|||||||
# locally computed
|
# locally computed
|
||||||
sha256 7d63f3a0c79cb5d187a0f2647734601f9c97d4eb8e545ce9ace7653c1f3f9a58 brcm-patchram-plus-94fb127e614b19a9a95561b8c1a0716e2e1e6293.tar.gz
|
sha256 febad69fbc9185b4c6a31188cf381fd280b88d93cb7f5a40dfdbab9c599c29a7 brcm-patchram-plus-95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042.tar.gz
|
||||||
sha256 3bbeac0dc9f456695e692687c9d90a3c4ffc0253b0476d487d8cede207a8dc5b src/main.c
|
sha256 26324f5c563b7e338c2876c8abe90c3681c1e9a6163fc59b494c94ad6493eda4 COPYING
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
BRCM_PATCHRAM_PLUS_VERSION = 94fb127e614b19a9a95561b8c1a0716e2e1e6293
|
BRCM_PATCHRAM_PLUS_VERSION = 95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042
|
||||||
BRCM_PATCHRAM_PLUS_SITE = $(call github,AsteroidOS,brcm-patchram-plus,$(BRCM_PATCHRAM_PLUS_VERSION))
|
BRCM_PATCHRAM_PLUS_SITE = $(call github,AsteroidOS,brcm-patchram-plus,$(BRCM_PATCHRAM_PLUS_VERSION))
|
||||||
BRCM_PATCHRAM_PLUS_LICENSE = Apache-2.0
|
BRCM_PATCHRAM_PLUS_LICENSE = Apache-2.0
|
||||||
BRCM_PATCHRAM_PLUS_LICENSE_FILES = src/main.c
|
BRCM_PATCHRAM_PLUS_LICENSE_FILES = COPYING
|
||||||
BRCM_PATCHRAM_PLUS_AUTORECONF = YES
|
BRCM_PATCHRAM_PLUS_AUTORECONF = YES
|
||||||
|
|
||||||
$(eval $(autotools-package))
|
$(eval $(autotools-package))
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# Locally calculated
|
# Locally calculated
|
||||||
sha256 3e578406dead2fc72c4b52f77db39dc779fa8b460352116c06f1ae29219bd8c2 docker-cli-v18.09.0.tar.gz
|
sha256 29f3a435bfcd52dbe26f6315ee92bffc0220a537608935a2c3870f6b729fc16e docker-cli-v18.09.2.tar.gz
|
||||||
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
DOCKER_CLI_VERSION = v18.09.0
|
DOCKER_CLI_VERSION = v18.09.2
|
||||||
DOCKER_CLI_SITE = $(call github,docker,cli,$(DOCKER_CLI_VERSION))
|
DOCKER_CLI_SITE = $(call github,docker,cli,$(DOCKER_CLI_VERSION))
|
||||||
DOCKER_CLI_WORKSPACE = gopath
|
DOCKER_CLI_WORKSPACE = gopath
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ config BR2_PACKAGE_DOCKER_CONTAINERD
|
|||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
|
depends on !BR2_PACKAGE_TOOLCHAIN_USES_UCLIBC # runc
|
||||||
depends on BR2_USE_MMU # util-linux
|
depends on BR2_USE_MMU # util-linux
|
||||||
select BR2_PACKAGE_RUNC # runtime dependency
|
select BR2_PACKAGE_RUNC # runtime dependency
|
||||||
select BR2_PACKAGE_UTIL_LINUX # runtime dependency
|
select BR2_PACKAGE_UTIL_LINUX # runtime dependency
|
||||||
@ -27,8 +28,8 @@ config BR2_PACKAGE_DOCKER_CONTAINERD_DRIVER_BTRFS
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
comment "docker-containerd needs a toolchain w/ threads"
|
comment "docker-containerd needs a glibc or musl toolchain w/ threads"
|
||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on BR2_USE_MMU
|
depends on BR2_USE_MMU
|
||||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# Computed locally
|
# Computed locally
|
||||||
sha256 a2780aca4d72bb8aced14ca9de99bdc9a90bdaacb06c5ddd8378a66443c1d70f docker-containerd-v1.2.1.tar.gz
|
sha256 ff4c2ad680c9e2484e335868a54b0c1ea49d9165dd5b38b64ef7d9dacf2b96b4 docker-containerd-v1.2.3.tar.gz
|
||||||
sha256 4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4 LICENSE
|
sha256 4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4 LICENSE
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
DOCKER_CONTAINERD_VERSION = v1.2.1
|
DOCKER_CONTAINERD_VERSION = v1.2.3
|
||||||
DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION))
|
DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION))
|
||||||
DOCKER_CONTAINERD_LICENSE = Apache-2.0
|
DOCKER_CONTAINERD_LICENSE = Apache-2.0
|
||||||
DOCKER_CONTAINERD_LICENSE_FILES = LICENSE
|
DOCKER_CONTAINERD_LICENSE_FILES = LICENSE
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
From 324e7be4b252c13002bca6a9d82e7b2e43664634 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Stewart <christian@paral.in>
|
||||||
|
Date: Mon, 26 Nov 2018 22:59:32 -0800
|
||||||
|
Subject: [PATCH] Fix faulty runc version commit scrape
|
||||||
|
|
||||||
|
This commit replaces faulty logic to determine the runc version commit hash.
|
||||||
|
|
||||||
|
The original logic takes the second line of the output of "runc --version" and
|
||||||
|
does not work if there are a different number of lines printed from the command
|
||||||
|
than expected. The buildroot version of runc outputs two lines instead of the
|
||||||
|
expected three, causing the error:
|
||||||
|
|
||||||
|
unknown output format: runc version commit: ...
|
||||||
|
|
||||||
|
This patch replaces this logic with a simple scan of the "runc --version"
|
||||||
|
output, searching for the "runc version commit" prefixed line.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Stewart <christian@paral.in>
|
||||||
|
---
|
||||||
|
daemon/info_unix.go | 9 +++++----
|
||||||
|
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/daemon/info_unix.go b/daemon/info_unix.go
|
||||||
|
index 60b2f99870..688a510796 100644
|
||||||
|
--- a/daemon/info_unix.go
|
||||||
|
+++ b/daemon/info_unix.go
|
||||||
|
@@ -32,10 +32,11 @@ func (daemon *Daemon) fillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo)
|
||||||
|
defaultRuntimeBinary := daemon.configStore.GetRuntime(v.DefaultRuntime).Path
|
||||||
|
if rv, err := exec.Command(defaultRuntimeBinary, "--version").Output(); err == nil {
|
||||||
|
parts := strings.Split(strings.TrimSpace(string(rv)), "\n")
|
||||||
|
- if len(parts) == 3 {
|
||||||
|
- parts = strings.Split(parts[1], ": ")
|
||||||
|
- if len(parts) == 2 {
|
||||||
|
- v.RuncCommit.ID = strings.TrimSpace(parts[1])
|
||||||
|
+ for _, pt := range parts {
|
||||||
|
+ ptKv := strings.Split(pt, ":")
|
||||||
|
+ if strings.HasSuffix(strings.TrimSpace(ptKv[0]), "commit") {
|
||||||
|
+ v.RuncCommit.ID = strings.TrimSpace(ptKv[1])
|
||||||
|
+ break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.18.1
|
||||||
|
|
@ -3,6 +3,7 @@ config BR2_PACKAGE_DOCKER_ENGINE
|
|||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
|
depends on !BR2_TOOLCHAIN_USES_UCLIBC # docker-containerd -> runc
|
||||||
depends on BR2_USE_MMU # docker-containerd
|
depends on BR2_USE_MMU # docker-containerd
|
||||||
select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency
|
select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency
|
||||||
select BR2_PACKAGE_DOCKER_PROXY # runtime dependency
|
select BR2_PACKAGE_DOCKER_PROXY # runtime dependency
|
||||||
@ -49,8 +50,8 @@ config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
comment "docker-engine needs a toolchain w/ threads"
|
comment "docker-engine needs a glibc or musl toolchain w/ threads"
|
||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC
|
||||||
depends on BR2_USE_MMU
|
depends on BR2_USE_MMU
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# Locally calculated
|
# Locally calculated
|
||||||
sha256 b5278b3f2b460ea61f47833abd2a844f348b4518e73f309294ad178c205a48e1 docker-engine-v18.09.0.tar.gz
|
sha256 4babbcbc3e1d7750c61a1e5bee29bd206256948961feaac5b44cabb0c70a50a6 docker-engine-v18.09.2.tar.gz
|
||||||
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
DOCKER_ENGINE_VERSION = v18.09.0
|
DOCKER_ENGINE_VERSION = v18.09.2
|
||||||
DOCKER_ENGINE_SITE = $(call github,docker,engine,$(DOCKER_ENGINE_VERSION))
|
DOCKER_ENGINE_SITE = $(call github,docker,engine,$(DOCKER_ENGINE_VERSION))
|
||||||
|
|
||||||
DOCKER_ENGINE_LICENSE = Apache-2.0
|
DOCKER_ENGINE_LICENSE = Apache-2.0
|
||||||
|
@ -0,0 +1,176 @@
|
|||||||
|
From a1de1e6ab51ab37a17975aad1193f2523e7e7e84 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Wed, 5 Dec 2018 12:22:13 +0000
|
||||||
|
Subject: [PATCH] Sanitize op stack for error conditions
|
||||||
|
|
||||||
|
We save the stacks to an array and store the array for the error handler to
|
||||||
|
access.
|
||||||
|
|
||||||
|
For SAFER, we traverse the array, and deep copy any op arrays (procedures). As
|
||||||
|
we make these copies, we check for operators that do *not* exist in systemdict,
|
||||||
|
when we find one, we replace the operator with a name object (of the form
|
||||||
|
"/--opname--").
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 13b0a36f818
|
||||||
|
|
||||||
|
psi/int.mak | 3 +-
|
||||||
|
psi/interp.c | 8 ++++++
|
||||||
|
psi/istack.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
psi/istack.h | 3 ++
|
||||||
|
4 files changed, 91 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/psi/int.mak b/psi/int.mak
|
||||||
|
index 6ab5bf0069dd..6b349cb042dd 100644
|
||||||
|
--- a/psi/int.mak
|
||||||
|
+++ b/psi/int.mak
|
||||||
|
@@ -204,7 +204,8 @@ $(PSOBJ)iparam.$(OBJ) : $(PSSRC)iparam.c $(GH)\
|
||||||
|
$(PSOBJ)istack.$(OBJ) : $(PSSRC)istack.c $(GH) $(memory__h)\
|
||||||
|
$(ierrors_h) $(gsstruct_h) $(gsutil_h)\
|
||||||
|
$(ialloc_h) $(istack_h) $(istkparm_h) $(istruct_h) $(iutil_h) $(ivmspace_h)\
|
||||||
|
- $(store_h) $(INT_MAK) $(MAKEDIRS)
|
||||||
|
+ $(store_h) $(icstate_h) $(iname_h) $(dstack_h) $(idict_h) \
|
||||||
|
+ $(INT_MAK) $(MAKEDIRS)
|
||||||
|
$(PSCC) $(PSO_)istack.$(OBJ) $(C_) $(PSSRC)istack.c
|
||||||
|
|
||||||
|
$(PSOBJ)iutil.$(OBJ) : $(PSSRC)iutil.c $(GH) $(math__h) $(memory__h) $(string__h)\
|
||||||
|
diff --git a/psi/interp.c b/psi/interp.c
|
||||||
|
index 6dc0ddae1b3c..aa5779c51420 100644
|
||||||
|
--- a/psi/interp.c
|
||||||
|
+++ b/psi/interp.c
|
||||||
|
@@ -761,6 +761,7 @@ copy_stack(i_ctx_t *i_ctx_p, const ref_stack_t * pstack, int skip, ref * arr)
|
||||||
|
uint size = ref_stack_count(pstack) - skip;
|
||||||
|
uint save_space = ialloc_space(idmemory);
|
||||||
|
int code, i;
|
||||||
|
+ ref *safety, *safe;
|
||||||
|
|
||||||
|
if (size > 65535)
|
||||||
|
size = 65535;
|
||||||
|
@@ -778,6 +779,13 @@ copy_stack(i_ctx_t *i_ctx_p, const ref_stack_t * pstack, int skip, ref * arr)
|
||||||
|
make_null(&arr->value.refs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ if (pstack == &o_stack && dict_find_string(systemdict, "SAFETY", &safety) > 0 &&
|
||||||
|
+ dict_find_string(safety, "safe", &safe) > 0 && r_has_type(safe, t_boolean) &&
|
||||||
|
+ safe->value.boolval == true) {
|
||||||
|
+ code = ref_stack_array_sanitize(i_ctx_p, arr, arr);
|
||||||
|
+ if (code < 0)
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
ialloc_set_space(idmemory, save_space);
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
diff --git a/psi/istack.c b/psi/istack.c
|
||||||
|
index 8fe151fa5628..f1a3e511534d 100644
|
||||||
|
--- a/psi/istack.c
|
||||||
|
+++ b/psi/istack.c
|
||||||
|
@@ -27,6 +27,10 @@
|
||||||
|
#include "iutil.h"
|
||||||
|
#include "ivmspace.h" /* for local/global test */
|
||||||
|
#include "store.h"
|
||||||
|
+#include "icstate.h"
|
||||||
|
+#include "iname.h"
|
||||||
|
+#include "dstack.h"
|
||||||
|
+#include "idict.h"
|
||||||
|
|
||||||
|
/* Forward references */
|
||||||
|
static void init_block(ref_stack_t *pstack, const ref *pblock_array,
|
||||||
|
@@ -294,6 +298,80 @@ ref_stack_store_check(const ref_stack_t *pstack, ref *parray, uint count,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int
|
||||||
|
+ref_stack_array_sanitize(i_ctx_t *i_ctx_p, ref *sarr, ref *darr)
|
||||||
|
+{
|
||||||
|
+ int i, code;
|
||||||
|
+ ref obj, arr2;
|
||||||
|
+ ref *pobj2;
|
||||||
|
+ gs_memory_t *mem = (gs_memory_t *)idmemory->current;
|
||||||
|
+
|
||||||
|
+ if (!r_is_array(sarr) || !r_has_type(darr, t_array))
|
||||||
|
+ return_error(gs_error_typecheck);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < r_size(sarr); i++) {
|
||||||
|
+ code = array_get(mem, sarr, i, &obj);
|
||||||
|
+ if (code < 0)
|
||||||
|
+ make_null(&obj);
|
||||||
|
+ switch(r_type(&obj)) {
|
||||||
|
+ case t_operator:
|
||||||
|
+ {
|
||||||
|
+ int index = op_index(&obj);
|
||||||
|
+
|
||||||
|
+ if (index > 0 && index < op_def_count) {
|
||||||
|
+ const byte *data = (const byte *)(op_index_def(index)->oname + 1);
|
||||||
|
+ if (dict_find_string(systemdict, (const char *)data, &pobj2) <= 0) {
|
||||||
|
+ byte *s = gs_alloc_bytes(mem, strlen((char *)data) + 5, "ref_stack_array_sanitize");
|
||||||
|
+ if (s) {
|
||||||
|
+ s[0] = '\0';
|
||||||
|
+ strcpy((char *)s, "--");
|
||||||
|
+ strcpy((char *)s + 2, (char *)data);
|
||||||
|
+ strcpy((char *)s + strlen((char *)data) + 2, "--");
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ s = (byte *)data;
|
||||||
|
+ }
|
||||||
|
+ code = name_ref(imemory, s, strlen((char *)s), &obj, 1);
|
||||||
|
+ if (code < 0) make_null(&obj);
|
||||||
|
+ if (s != data)
|
||||||
|
+ gs_free_object(mem, s, "ref_stack_array_sanitize");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ make_null(&obj);
|
||||||
|
+ }
|
||||||
|
+ ref_assign(darr->value.refs + i, &obj);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case t_array:
|
||||||
|
+ case t_shortarray:
|
||||||
|
+ case t_mixedarray:
|
||||||
|
+ {
|
||||||
|
+ int attrs = r_type_attrs(&obj) & (a_write | a_read | a_execute | a_executable);
|
||||||
|
+ /* We only want to copy executable arrays */
|
||||||
|
+ if (attrs & (a_execute | a_executable)) {
|
||||||
|
+ code = ialloc_ref_array(&arr2, attrs, r_size(&obj), "ref_stack_array_sanitize");
|
||||||
|
+ if (code < 0) {
|
||||||
|
+ make_null(&arr2);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ code = ref_stack_array_sanitize(i_ctx_p, &obj, &arr2);
|
||||||
|
+ }
|
||||||
|
+ ref_assign(darr->value.refs + i, &arr2);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ ref_assign(darr->value.refs + i, &obj);
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ default:
|
||||||
|
+ ref_assign(darr->value.refs + i, &obj);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Store the top 'count' elements of a stack, starting 'skip' elements below
|
||||||
|
* the top, into an array, with or without store/undo checking. age=-1 for
|
||||||
|
diff --git a/psi/istack.h b/psi/istack.h
|
||||||
|
index 051dcbe216cf..54be405adfb3 100644
|
||||||
|
--- a/psi/istack.h
|
||||||
|
+++ b/psi/istack.h
|
||||||
|
@@ -129,6 +129,9 @@ int ref_stack_store(const ref_stack_t *pstack, ref *parray, uint count,
|
||||||
|
uint skip, int age, bool check,
|
||||||
|
gs_dual_memory_t *idmem, client_name_t cname);
|
||||||
|
|
||||||
|
+int
|
||||||
|
+ref_stack_array_sanitize(i_ctx_t *i_ctx_p, ref *sarr, ref *darr);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Pop the top N elements off a stack.
|
||||||
|
* The number must not exceed the number of elements in use.
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,441 @@
|
|||||||
|
From f0397dbfbe5eea325613ff375b30eb0db5551ffe Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Thu, 13 Dec 2018 15:28:34 +0000
|
||||||
|
Subject: [PATCH] Any transient procedures that call .force* operators
|
||||||
|
|
||||||
|
(i.e. for conditionals or loops) make them executeonly.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 2db98f9c661
|
||||||
|
|
||||||
|
Resource/Init/gs_diskn.ps | 2 +-
|
||||||
|
Resource/Init/gs_dps1.ps | 4 ++--
|
||||||
|
Resource/Init/gs_fntem.ps | 4 ++--
|
||||||
|
Resource/Init/gs_fonts.ps | 12 ++++++------
|
||||||
|
Resource/Init/gs_init.ps | 4 ++--
|
||||||
|
Resource/Init/gs_lev2.ps | 11 ++++++-----
|
||||||
|
Resource/Init/gs_pdfwr.ps | 2 +-
|
||||||
|
Resource/Init/gs_res.ps | 4 ++--
|
||||||
|
Resource/Init/gs_setpd.ps | 2 +-
|
||||||
|
Resource/Init/pdf_base.ps | 13 ++++++++-----
|
||||||
|
Resource/Init/pdf_draw.ps | 16 +++++++++-------
|
||||||
|
Resource/Init/pdf_font.ps | 6 +++---
|
||||||
|
Resource/Init/pdf_main.ps | 4 ++--
|
||||||
|
Resource/Init/pdf_ops.ps | 7 ++++---
|
||||||
|
14 files changed, 49 insertions(+), 42 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_diskn.ps b/Resource/Init/gs_diskn.ps
|
||||||
|
index fd694bc44b5a..8bf20542040d 100644
|
||||||
|
--- a/Resource/Init/gs_diskn.ps
|
||||||
|
+++ b/Resource/Init/gs_diskn.ps
|
||||||
|
@@ -51,7 +51,7 @@ systemdict begin
|
||||||
|
mark 5 1 roll ] mark exch { { } forall } forall ]
|
||||||
|
//systemdict /.searchabledevs 2 index .forceput
|
||||||
|
exch .setglobal
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
if
|
||||||
|
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||||
|
index ec5db61b9f03..4fae2839940c 100644
|
||||||
|
--- a/Resource/Init/gs_dps1.ps
|
||||||
|
+++ b/Resource/Init/gs_dps1.ps
|
||||||
|
@@ -78,7 +78,7 @@ level2dict begin
|
||||||
|
.currentglobal
|
||||||
|
{ % Current mode is global; delete from local directory too.
|
||||||
|
//systemdict /LocalFontDirectory .knownget
|
||||||
|
- { 1 index .forceundef } % LocalFontDirectory is readonly
|
||||||
|
+ { 1 index .forceundef } executeonly % LocalFontDirectory is readonly
|
||||||
|
if
|
||||||
|
}
|
||||||
|
{ % Current mode is local; if there was a shadowed global
|
||||||
|
@@ -126,7 +126,7 @@ level2dict begin
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
} forall
|
||||||
|
- pop counttomark 2 idiv { .forceundef } repeat pop % readonly
|
||||||
|
+ pop counttomark 2 idiv { .forceundef } executeonly repeat pop % readonly
|
||||||
|
}
|
||||||
|
if
|
||||||
|
//SharedFontDirectory exch .forcecopynew pop
|
||||||
|
diff --git a/Resource/Init/gs_fntem.ps b/Resource/Init/gs_fntem.ps
|
||||||
|
index c1f7651f18cc..6eb672a6840e 100644
|
||||||
|
--- a/Resource/Init/gs_fntem.ps
|
||||||
|
+++ b/Resource/Init/gs_fntem.ps
|
||||||
|
@@ -401,12 +401,12 @@ currentdict end def
|
||||||
|
.forceput % FontInfo can be read-only.
|
||||||
|
pop % bool <font>
|
||||||
|
exit
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
dup /FontInfo get % bool <font> <FI>
|
||||||
|
/GlyphNames2Unicode /Unicode /Decoding findresource
|
||||||
|
.forceput % FontInfo can be read-only.
|
||||||
|
exit
|
||||||
|
- } loop
|
||||||
|
+ } executeonly loop
|
||||||
|
exch setglobal
|
||||||
|
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||||
|
index 803faca4918d..290da0cd6819 100644
|
||||||
|
--- a/Resource/Init/gs_fonts.ps
|
||||||
|
+++ b/Resource/Init/gs_fonts.ps
|
||||||
|
@@ -374,7 +374,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
/.setnativefontmapbuilt { % set whether we've been run
|
||||||
|
dup type /booleantype eq {
|
||||||
|
systemdict exch /.nativefontmapbuilt exch .forceput
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
{pop}
|
||||||
|
ifelse
|
||||||
|
} .bind executeonly odef
|
||||||
|
@@ -1007,11 +1007,11 @@ $error /SubstituteFont { } put
|
||||||
|
{ 2 index gcheck currentglobal
|
||||||
|
2 copy eq {
|
||||||
|
pop pop .forceput
|
||||||
|
- } {
|
||||||
|
+ } executeonly {
|
||||||
|
5 1 roll setglobal
|
||||||
|
dup length string copy
|
||||||
|
.forceput setglobal
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||||
|
|
||||||
|
% Attempt to load a font from a file.
|
||||||
|
@@ -1084,7 +1084,7 @@ $error /SubstituteFont { } put
|
||||||
|
.FontDirectory 3 index .forceundef % readonly
|
||||||
|
1 index (r) file .loadfont .FontDirectory exch
|
||||||
|
/.setglobal .systemvar exec
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
{ .loadfont .FontDirectory
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
@@ -1105,7 +1105,7 @@ $error /SubstituteFont { } put
|
||||||
|
dup 3 index .fontknownget
|
||||||
|
{ dup /PathLoad 4 index .putgstringcopy
|
||||||
|
4 1 roll pop pop pop //true exit
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
|
||||||
|
% Maybe the file had a different FontName.
|
||||||
|
% See if we can get a FontName from the file, and if so,
|
||||||
|
@@ -1134,7 +1134,7 @@ $error /SubstituteFont { } put
|
||||||
|
ifelse % Stack: origfontname fontdict
|
||||||
|
exch pop //true exit
|
||||||
|
% Stack: fontdict
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
if pop % Stack: origfontname fontdirectory path
|
||||||
|
}
|
||||||
|
if pop pop % Stack: origfontname
|
||||||
|
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||||
|
index d733124b96d1..56c0bd268b53 100644
|
||||||
|
--- a/Resource/Init/gs_init.ps
|
||||||
|
+++ b/Resource/Init/gs_init.ps
|
||||||
|
@@ -2357,7 +2357,7 @@ SAFER { .setsafeglobal } if
|
||||||
|
% Update the copy of the user parameters.
|
||||||
|
mark .currentuserparams counttomark 2 idiv {
|
||||||
|
userparams 3 1 roll .forceput % userparams is read-only
|
||||||
|
- } repeat pop
|
||||||
|
+ } executeonly repeat pop
|
||||||
|
% Turn on idiom recognition, if available.
|
||||||
|
currentuserparams /IdiomRecognition known {
|
||||||
|
/IdiomRecognition //true .definepsuserparam
|
||||||
|
@@ -2376,7 +2376,7 @@ SAFER { .setsafeglobal } if
|
||||||
|
% Remove real system params from pssystemparams.
|
||||||
|
mark .currentsystemparams counttomark 2 idiv {
|
||||||
|
pop pssystemparams exch .forceundef
|
||||||
|
- } repeat pop
|
||||||
|
+ } executeonly repeat pop
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Set up AlignToPixels :
|
||||||
|
diff --git a/Resource/Init/gs_lev2.ps b/Resource/Init/gs_lev2.ps
|
||||||
|
index 44fe61956659..0f0d57331c23 100644
|
||||||
|
--- a/Resource/Init/gs_lev2.ps
|
||||||
|
+++ b/Resource/Init/gs_lev2.ps
|
||||||
|
@@ -154,7 +154,8 @@ end
|
||||||
|
% protect top level of parameters that we copied
|
||||||
|
dup type dup /arraytype eq exch /stringtype eq or { readonly } if
|
||||||
|
/userparams .systemvar 3 1 roll .forceput % userparams is read-only
|
||||||
|
- } {
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
pop pop
|
||||||
|
} ifelse
|
||||||
|
} forall
|
||||||
|
@@ -224,7 +225,7 @@ end
|
||||||
|
% protect top level parameters that we copied
|
||||||
|
dup type dup /arraytype eq exch /stringtype eq or { readonly } if
|
||||||
|
//pssystemparams 3 1 roll .forceput % pssystemparams is read-only
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
{ pop pop
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
@@ -934,7 +935,7 @@ mark
|
||||||
|
dup /PaintProc get
|
||||||
|
1 index /Implementation known not {
|
||||||
|
1 index dup /Implementation //null .forceput readonly pop
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
exec
|
||||||
|
}.bind odef
|
||||||
|
|
||||||
|
@@ -958,7 +959,7 @@ mark
|
||||||
|
dup /PaintProc get
|
||||||
|
1 index /Implementation known not {
|
||||||
|
1 index dup /Implementation //null .forceput readonly pop
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
/UNROLLFORMS where {/UNROLLFORMS get}{false}ifelse not
|
||||||
|
%% [CTM] <<Form>> PaintProc .beginform -
|
||||||
|
{
|
||||||
|
@@ -1005,7 +1006,7 @@ mark
|
||||||
|
%% Form dictioanry using the /Implementation key).
|
||||||
|
1 dict dup /FormID 4 -1 roll put
|
||||||
|
1 index exch /Implementation exch .forceput readonly pop
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
ifelse
|
||||||
|
}
|
||||||
|
{
|
||||||
|
diff --git a/Resource/Init/gs_pdfwr.ps b/Resource/Init/gs_pdfwr.ps
|
||||||
|
index 58e75d3a4831..b425103d1cf3 100644
|
||||||
|
--- a/Resource/Init/gs_pdfwr.ps
|
||||||
|
+++ b/Resource/Init/gs_pdfwr.ps
|
||||||
|
@@ -650,7 +650,7 @@ currentdict /.pdfmarkparams .undef
|
||||||
|
} ifelse
|
||||||
|
} bind .makeoperator .forceput
|
||||||
|
systemdict /.pdf_hooked_DSC_Creator //true .forceput
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
pop
|
||||||
|
} if
|
||||||
|
} {
|
||||||
|
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||||
|
index 8eb8bb0e5829..d9b34599e7c2 100644
|
||||||
|
--- a/Resource/Init/gs_res.ps
|
||||||
|
+++ b/Resource/Init/gs_res.ps
|
||||||
|
@@ -152,7 +152,7 @@ setglobal
|
||||||
|
% use .forceput / .forcedef later to replace the dummy,
|
||||||
|
% empty .Instances dictionary with the real one later.
|
||||||
|
readonly
|
||||||
|
- } {
|
||||||
|
+ }{
|
||||||
|
/defineresource cvx /typecheck signaloperror
|
||||||
|
} ifelse
|
||||||
|
} bind executeonly odef
|
||||||
|
@@ -424,7 +424,7 @@ status {
|
||||||
|
% As noted above, Category dictionaries are read-only,
|
||||||
|
% so we have to use .forcedef here.
|
||||||
|
/.Instances 1 index .forcedef % Category dict is read-only
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
}
|
||||||
|
{ .LocalInstances dup //.emptydict eq
|
||||||
|
{ pop 3 dict localinstancedict Category 2 index put
|
||||||
|
diff --git a/Resource/Init/gs_setpd.ps b/Resource/Init/gs_setpd.ps
|
||||||
|
index e22597ebb5f3..7875d1f2f131 100644
|
||||||
|
--- a/Resource/Init/gs_setpd.ps
|
||||||
|
+++ b/Resource/Init/gs_setpd.ps
|
||||||
|
@@ -634,7 +634,7 @@ NOMEDIAATTRS {
|
||||||
|
SETPDDEBUG { (Rolling back.) = pstack flush } if
|
||||||
|
3 index 2 index 3 -1 roll .forceput
|
||||||
|
4 index 1 index .knownget
|
||||||
|
- { 4 index 3 1 roll .forceput }
|
||||||
|
+ { 4 index 3 1 roll .forceput } executeonly
|
||||||
|
{ 3 index exch .undef }
|
||||||
|
ifelse
|
||||||
|
} bind executeonly odef
|
||||||
|
diff --git a/Resource/Init/pdf_base.ps b/Resource/Init/pdf_base.ps
|
||||||
|
index b45e9803165e..73127296c221 100644
|
||||||
|
--- a/Resource/Init/pdf_base.ps
|
||||||
|
+++ b/Resource/Init/pdf_base.ps
|
||||||
|
@@ -130,26 +130,29 @@ currentdict /num-chars-dict .undef
|
||||||
|
|
||||||
|
/.pdfexectoken { % <count> <opdict> <exectoken> .pdfexectoken ?
|
||||||
|
PDFDEBUG {
|
||||||
|
- pdfdict /PDFSTEPcount known not { pdfdict /PDFSTEPcount 1 .forceput } if
|
||||||
|
+ pdfdict /PDFSTEPcount known not { pdfdict /PDFSTEPcount 1 .forceput } executeonly if
|
||||||
|
PDFSTEP {
|
||||||
|
pdfdict /PDFtokencount 2 copy .knownget { 1 add } { 1 } ifelse .forceput
|
||||||
|
PDFSTEPcount 1 gt {
|
||||||
|
pdfdict /PDFSTEPcount PDFSTEPcount 1 sub .forceput
|
||||||
|
- } {
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
dup ==only
|
||||||
|
( step # ) print PDFtokencount =only
|
||||||
|
( ? ) print flush 1 //false .outputpage
|
||||||
|
(%stdin) (r) file 255 string readline {
|
||||||
|
token {
|
||||||
|
exch pop pdfdict /PDFSTEPcount 3 -1 roll .forceput
|
||||||
|
- } {
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
pdfdict /PDFSTEPcount 1 .forceput
|
||||||
|
- } ifelse % token
|
||||||
|
+ } executeonly ifelse % token
|
||||||
|
} {
|
||||||
|
pop /PDFSTEP //false def % EOF on stdin
|
||||||
|
} ifelse % readline
|
||||||
|
} ifelse % PDFSTEPcount > 1
|
||||||
|
- } {
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
dup ==only () = flush
|
||||||
|
} ifelse % PDFSTEP
|
||||||
|
} if % PDFDEBUG
|
||||||
|
diff --git a/Resource/Init/pdf_draw.ps b/Resource/Init/pdf_draw.ps
|
||||||
|
index 6b0ba93e1e73..40c6ac80acce 100644
|
||||||
|
--- a/Resource/Init/pdf_draw.ps
|
||||||
|
+++ b/Resource/Init/pdf_draw.ps
|
||||||
|
@@ -1118,14 +1118,14 @@ currentdict end readonly def
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
}
|
||||||
|
{
|
||||||
|
currentglobal pdfdict gcheck .setglobal
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
end
|
||||||
|
} ifelse
|
||||||
|
} loop
|
||||||
|
@@ -1141,14 +1141,14 @@ currentdict end readonly def
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
}
|
||||||
|
{
|
||||||
|
currentglobal pdfdict gcheck .setglobal
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
} if
|
||||||
|
pop
|
||||||
|
|
||||||
|
@@ -2350,9 +2350,10 @@ currentdict /last-ditch-bpc-csp undef
|
||||||
|
/IncrementAppearanceNumber {
|
||||||
|
pdfdict /AppearanceNumber .knownget {
|
||||||
|
1 add pdfdict /AppearanceNumber 3 -1 roll .forceput
|
||||||
|
- }{
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
pdfdict /AppearanceNumber 0 .forceput
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
}bind executeonly odef
|
||||||
|
|
||||||
|
/MakeAppearanceName {
|
||||||
|
@@ -2510,7 +2511,8 @@ currentdict /last-ditch-bpc-csp undef
|
||||||
|
%% want to preserve it.
|
||||||
|
pdfdict /.PreservePDFForm false .forceput
|
||||||
|
/q cvx /execform cvx 5 -2 roll
|
||||||
|
- }{
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
/q cvx /PDFexecform cvx 5 -2 roll
|
||||||
|
} ifelse
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/pdf_font.ps b/Resource/Init/pdf_font.ps
|
||||||
|
index bea9ea95ad1d..4cd62b9d9bb4 100644
|
||||||
|
--- a/Resource/Init/pdf_font.ps
|
||||||
|
+++ b/Resource/Init/pdf_font.ps
|
||||||
|
@@ -714,7 +714,7 @@ currentdict end readonly def
|
||||||
|
pop pop pop
|
||||||
|
currentdict /.stackdepth .forceundef
|
||||||
|
currentdict /.dstackdepth .forceundef
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
{pop pop pop}
|
||||||
|
ifelse
|
||||||
|
|
||||||
|
@@ -1232,7 +1232,7 @@ currentdict /eexec_pdf_param_dict .undef
|
||||||
|
(\n **** Warning: Type 3 glyph has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n)
|
||||||
|
pdfformatwarning
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
Q
|
||||||
|
} repeat
|
||||||
|
Q
|
||||||
|
@@ -2016,7 +2016,7 @@ currentdict /CMap_read_dict undef
|
||||||
|
/CIDFallBack /CIDFont findresource
|
||||||
|
} if
|
||||||
|
exit
|
||||||
|
- } if
|
||||||
|
+ } executeonly if
|
||||||
|
} if
|
||||||
|
} if
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/pdf_main.ps b/Resource/Init/pdf_main.ps
|
||||||
|
index 00da47a48711..37e69b39ac98 100644
|
||||||
|
--- a/Resource/Init/pdf_main.ps
|
||||||
|
+++ b/Resource/Init/pdf_main.ps
|
||||||
|
@@ -2701,14 +2701,14 @@ currentdict /PDF2PS_matrix_key undef
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
}
|
||||||
|
{
|
||||||
|
currentglobal pdfdict gcheck .setglobal
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
} if
|
||||||
|
} if
|
||||||
|
pop
|
||||||
|
diff --git a/Resource/Init/pdf_ops.ps b/Resource/Init/pdf_ops.ps
|
||||||
|
index 8672d617f363..aa0964139a56 100644
|
||||||
|
--- a/Resource/Init/pdf_ops.ps
|
||||||
|
+++ b/Resource/Init/pdf_ops.ps
|
||||||
|
@@ -184,14 +184,14 @@ currentdict /gput_always_allow .undef
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
}
|
||||||
|
{
|
||||||
|
currentglobal pdfdict gcheck .setglobal
|
||||||
|
pdfdict /.Qqwarning_issued //true .forceput
|
||||||
|
.setglobal
|
||||||
|
pdfformaterror
|
||||||
|
- } ifelse
|
||||||
|
+ } executeonly ifelse
|
||||||
|
} if
|
||||||
|
} bind executeonly odef
|
||||||
|
|
||||||
|
@@ -439,7 +439,8 @@ currentdict /gput_always_allow .undef
|
||||||
|
dup type /booleantype eq {
|
||||||
|
.currentSMask type /dicttype eq {
|
||||||
|
.currentSMask /Processed 2 index .forceput
|
||||||
|
- } {
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
.setSMask
|
||||||
|
}ifelse
|
||||||
|
}{
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From af9a9dceb7be7df743d55c4d078a1ae846b6f556 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Sat, 15 Dec 2018 09:08:32 +0000
|
||||||
|
Subject: [PATCH] Bug700317: Fix logic for an older change
|
||||||
|
|
||||||
|
Unlike almost every other function in gs, dict_find_string() returns 1 on
|
||||||
|
success 0 or <0 on failure. The logic for this case was wrong.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 99f13091a3
|
||||||
|
|
||||||
|
psi/interp.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/psi/interp.c b/psi/interp.c
|
||||||
|
index aa5779c51420..f6c45bbe24dc 100644
|
||||||
|
--- a/psi/interp.c
|
||||||
|
+++ b/psi/interp.c
|
||||||
|
@@ -703,7 +703,7 @@ again:
|
||||||
|
* i.e. it's an internal operator we have hidden
|
||||||
|
*/
|
||||||
|
code = dict_find_string(systemdict, (const char *)bufptr, &tobj);
|
||||||
|
- if (code < 0) {
|
||||||
|
+ if (code <= 0) {
|
||||||
|
buf[0] = buf[1] = buf[rlen + 2] = buf[rlen + 3] = '-';
|
||||||
|
rlen += 4;
|
||||||
|
bufptr = buf;
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,135 @@
|
|||||||
|
From b197ea0e528c20b7ee67785c50b4e06e0aa990f8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Tue, 18 Dec 2018 10:42:10 +0000
|
||||||
|
Subject: [PATCH] Harden some uses of .force* operators
|
||||||
|
|
||||||
|
by adding a few immediate evalutions
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 59d8f4deef90
|
||||||
|
|
||||||
|
Resource/Init/gs_dps1.ps | 4 ++--
|
||||||
|
Resource/Init/gs_fonts.ps | 20 ++++++++++----------
|
||||||
|
Resource/Init/gs_init.ps | 6 +++---
|
||||||
|
3 files changed, 15 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||||
|
index 4fae2839940c..b75ea14e77a3 100644
|
||||||
|
--- a/Resource/Init/gs_dps1.ps
|
||||||
|
+++ b/Resource/Init/gs_dps1.ps
|
||||||
|
@@ -74,7 +74,7 @@ level2dict begin
|
||||||
|
} odef
|
||||||
|
% undefinefont has to take local/global VM into account.
|
||||||
|
/undefinefont % <fontname> undefinefont -
|
||||||
|
- { .FontDirectory 1 .argindex .forceundef % FontDirectory is readonly
|
||||||
|
+ { //.FontDirectory 1 .argindex .forceundef % FontDirectory is readonly
|
||||||
|
.currentglobal
|
||||||
|
{ % Current mode is global; delete from local directory too.
|
||||||
|
//systemdict /LocalFontDirectory .knownget
|
||||||
|
@@ -85,7 +85,7 @@ level2dict begin
|
||||||
|
% definition, copy it into the local directory.
|
||||||
|
//systemdict /SharedFontDirectory .knownget
|
||||||
|
{ 1 index .knownget
|
||||||
|
- { .FontDirectory 2 index 3 -1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse } % readonly
|
||||||
|
+ { //.FontDirectory 2 index 3 -1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse } % readonly
|
||||||
|
if
|
||||||
|
}
|
||||||
|
if
|
||||||
|
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||||
|
index 290da0cd6819..c13a2fcc2d43 100644
|
||||||
|
--- a/Resource/Init/gs_fonts.ps
|
||||||
|
+++ b/Resource/Init/gs_fonts.ps
|
||||||
|
@@ -516,7 +516,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
if
|
||||||
|
}
|
||||||
|
if
|
||||||
|
- dup .FontDirectory 4 -2 roll { .growput } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||||
|
+ dup //.FontDirectory 4 -2 roll { .growput } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||||
|
% If the font originated as a resource, register it.
|
||||||
|
currentfile .currentresourcefile eq { dup .registerfont } if
|
||||||
|
readonly
|
||||||
|
@@ -943,7 +943,7 @@ $error /SubstituteFont { } put
|
||||||
|
% Try to find a font using only the present contents of Fontmap.
|
||||||
|
/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||||
|
% <fontname> .tryfindfont false
|
||||||
|
- .FontDirectory 1 index .fontknownget
|
||||||
|
+ //.FontDirectory 1 index .fontknownget
|
||||||
|
{ % Already loaded
|
||||||
|
exch pop //true
|
||||||
|
}
|
||||||
|
@@ -975,7 +975,7 @@ $error /SubstituteFont { } put
|
||||||
|
{ % Font with a procedural definition
|
||||||
|
exec % The procedure will load the font.
|
||||||
|
% Check to make sure this really happened.
|
||||||
|
- .FontDirectory 1 index .knownget
|
||||||
|
+ //.FontDirectory 1 index .knownget
|
||||||
|
{ exch pop //true exit }
|
||||||
|
if
|
||||||
|
}
|
||||||
|
@@ -1081,11 +1081,11 @@ $error /SubstituteFont { } put
|
||||||
|
% because it's different depending on language level.
|
||||||
|
.currentglobal exch /.setglobal .systemvar exec
|
||||||
|
% Remove the fake definition, if any.
|
||||||
|
- .FontDirectory 3 index .forceundef % readonly
|
||||||
|
- 1 index (r) file .loadfont .FontDirectory exch
|
||||||
|
+ //.FontDirectory 3 index .forceundef % readonly
|
||||||
|
+ 1 index (r) file .loadfont //.FontDirectory exch
|
||||||
|
/.setglobal .systemvar exec
|
||||||
|
} executeonly
|
||||||
|
- { .loadfont .FontDirectory
|
||||||
|
+ { .loadfont //.FontDirectory
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
% Stack: fontname fontfilename fontdirectory
|
||||||
|
@@ -1119,8 +1119,8 @@ $error /SubstituteFont { } put
|
||||||
|
% Stack: origfontname fontdirectory filefontname fontdict
|
||||||
|
3 -1 roll pop
|
||||||
|
% Stack: origfontname filefontname fontdict
|
||||||
|
- dup /FontName get dup FontDirectory exch .forceundef
|
||||||
|
- GlobalFontDirectory exch .forceundef
|
||||||
|
+ dup /FontName get dup //.FontDirectory exch .forceundef
|
||||||
|
+ /GlobalFontDirectory .systemvar exch .forceundef
|
||||||
|
dup length dict .copydict dup 3 index /FontName exch put
|
||||||
|
2 index exch definefont
|
||||||
|
exch
|
||||||
|
@@ -1176,10 +1176,10 @@ currentdict /.putgstringcopy .undef
|
||||||
|
{
|
||||||
|
{
|
||||||
|
pop dup type /stringtype eq { cvn } if
|
||||||
|
- .FontDirectory 1 index known not {
|
||||||
|
+ //.FontDirectory 1 index known not {
|
||||||
|
2 dict dup /FontName 3 index put
|
||||||
|
dup /FontType 1 put
|
||||||
|
- .FontDirectory 3 1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||||
|
+ //.FontDirectory 3 1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||||
|
} {
|
||||||
|
pop
|
||||||
|
} ifelse
|
||||||
|
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||||
|
index 56c0bd268b53..d9a0829f7f97 100644
|
||||||
|
--- a/Resource/Init/gs_init.ps
|
||||||
|
+++ b/Resource/Init/gs_init.ps
|
||||||
|
@@ -1168,8 +1168,8 @@ errordict /unknownerror .undef
|
||||||
|
}ifelse
|
||||||
|
}forall
|
||||||
|
noaccess pop
|
||||||
|
- systemdict /.setsafeerrors .forceundef
|
||||||
|
- systemdict /.SAFERERRORLIST .forceundef
|
||||||
|
+ //systemdict /.setsafeerrors .forceundef
|
||||||
|
+ //systemdict /.SAFERERRORLIST .forceundef
|
||||||
|
} bind executeonly odef
|
||||||
|
|
||||||
|
SAFERERRORS {.setsafererrors} if
|
||||||
|
@@ -2114,7 +2114,7 @@ currentdict /tempfilepaths undef
|
||||||
|
|
||||||
|
/.locksafe {
|
||||||
|
.locksafe_userparams
|
||||||
|
- systemdict /getenv {pop //false} .forceput
|
||||||
|
+ //systemdict /getenv {pop //false} .forceput
|
||||||
|
% setpagedevice has the side effect of clearing the page, but
|
||||||
|
% we will just document that. Using setpagedevice keeps the device
|
||||||
|
% properties and pagedevice .LockSafetyParams in agreement even
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,587 @@
|
|||||||
|
From 5628be1c41d23298aa5fce2f6dd48e2eb81f4be1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Wed, 9 Jan 2019 14:24:07 +0000
|
||||||
|
Subject: [PATCH] Undefine a bunch of gs_fonts.ps specific procs
|
||||||
|
|
||||||
|
Also reorder and add some immediate evaluation, so it still works with the
|
||||||
|
undefining.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 2768d1a6dddb
|
||||||
|
|
||||||
|
Resource/Init/gs_dps1.ps | 3 +-
|
||||||
|
Resource/Init/gs_fonts.ps | 275 +++++++++++++++++++++-----------------
|
||||||
|
Resource/Init/gs_res.ps | 6 +-
|
||||||
|
3 files changed, 156 insertions(+), 128 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||||
|
index b75ea14e77a3..8700c8cb304b 100644
|
||||||
|
--- a/Resource/Init/gs_dps1.ps
|
||||||
|
+++ b/Resource/Init/gs_dps1.ps
|
||||||
|
@@ -67,7 +67,8 @@ level2dict begin
|
||||||
|
|
||||||
|
/selectfont % <fontname> <size> selectfont -
|
||||||
|
{
|
||||||
|
- { 1 .argindex findfont
|
||||||
|
+ {
|
||||||
|
+ 1 .argindex findfont
|
||||||
|
1 index dup type /arraytype eq { makefont } { scalefont } ifelse
|
||||||
|
setfont pop pop
|
||||||
|
} stopped { /selectfont .systemvar $error /errorname get signalerror } if
|
||||||
|
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||||
|
index c13a2fcc2d43..056223544340 100644
|
||||||
|
--- a/Resource/Init/gs_fonts.ps
|
||||||
|
+++ b/Resource/Init/gs_fonts.ps
|
||||||
|
@@ -100,7 +100,7 @@ userdict /.nativeFontmap .FontDirectory maxlength dict put
|
||||||
|
{ 2 index token not
|
||||||
|
{ (Fontmap entry for ) print 1 index =only
|
||||||
|
( ends prematurely! Giving up.) = flush
|
||||||
|
- {.loadFontmap} 0 get 1 .quit
|
||||||
|
+ {//.loadFontmap exec} 0 get 1 .quit
|
||||||
|
} if
|
||||||
|
dup /; eq { pop 3 index 3 1 roll .growput exit } if
|
||||||
|
pop
|
||||||
|
@@ -202,6 +202,14 @@ NOFONTPATH { /FONTPATH () def } if
|
||||||
|
{ pop }
|
||||||
|
{ /FONTPATH (GS_FONTPATH) getenv not { () } if def }
|
||||||
|
ifelse
|
||||||
|
+
|
||||||
|
+% The following are dummy definitions that, if we have a FONTPATH, will
|
||||||
|
+% be replaced in the following section.
|
||||||
|
+% They are here so immediately evaulation will work, and allow them to
|
||||||
|
+% undefined at the bottom of the file.
|
||||||
|
+/.scanfontbegin{} bind def
|
||||||
|
+/.scanfontdir {} bind def
|
||||||
|
+
|
||||||
|
FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
/FONTPATH [ FONTPATH .pathlist ] def
|
||||||
|
|
||||||
|
@@ -242,12 +250,12 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
/.scanfontbegin
|
||||||
|
{ % Construct the table of all file names already in Fontmap.
|
||||||
|
currentglobal //true setglobal
|
||||||
|
- .scanfontdict dup maxlength Fontmap length 2 add .max .setmaxlength
|
||||||
|
+ //.scanfontdict dup maxlength Fontmap length 2 add .max .setmaxlength
|
||||||
|
Fontmap
|
||||||
|
{ exch pop
|
||||||
|
{ dup type /stringtype eq
|
||||||
|
- { .splitfilename pop .fonttempstring copy .lowerstring cvn
|
||||||
|
- .scanfontdict exch //true put
|
||||||
|
+ { //.splitfilename exec pop //.fonttempstring copy //.lowerstring exec cvn
|
||||||
|
+ //.scanfontdict exch //true put
|
||||||
|
}
|
||||||
|
{ pop
|
||||||
|
}
|
||||||
|
@@ -280,9 +288,9 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
/txt //true
|
||||||
|
.dicttomark def
|
||||||
|
/.scan1fontstring 8192 string def
|
||||||
|
-% %%BeginFont: is not per Adobe documentation, but a few fonts have it.
|
||||||
|
+% BeginFont: is not per Adobe documentation, but a few fonts have it.
|
||||||
|
/.scanfontheaders [(%!PS-Adobe*) (%!FontType*) (%%BeginFont:*)] def
|
||||||
|
-0 .scanfontheaders { length .max } forall 6 add % extra for PFB header
|
||||||
|
+0 //.scanfontheaders { length .max } forall 6 add % extra for PFB header
|
||||||
|
/.scan1fontfirst exch string def
|
||||||
|
/.scanfontdir % <dirname> .scanfontdir -
|
||||||
|
{ currentglobal exch //true setglobal
|
||||||
|
@@ -291,10 +299,10 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
0 0 0 4 -1 roll % found scanned files
|
||||||
|
{ % stack: <fontcount> <scancount> <filecount> <filename>
|
||||||
|
exch 1 add exch % increment filecount
|
||||||
|
- dup .splitfilename .fonttempstring copy .lowerstring
|
||||||
|
+ dup //.splitfilename exec //.fonttempstring copy //.lowerstring exec
|
||||||
|
% stack: <fontcount> <scancount> <filecount+1> <filename>
|
||||||
|
% <BASE> <ext>
|
||||||
|
- .scanfontskip exch known exch .scanfontdict exch known or
|
||||||
|
+ //.scanfontskip exch known exch //.scanfontdict exch known or
|
||||||
|
{ pop
|
||||||
|
% stack: <fontcount> <scancount> <filecount+1>
|
||||||
|
}
|
||||||
|
@@ -309,7 +317,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
% On some platforms, the file operator will open directories,
|
||||||
|
% but an error will occur if we try to read from one.
|
||||||
|
% Handle this possibility here.
|
||||||
|
- dup .scan1fontfirst { readstring } .internalstopped
|
||||||
|
+ dup //.scan1fontfirst { readstring } .internalstopped
|
||||||
|
{ pop pop () }
|
||||||
|
{ pop }
|
||||||
|
ifelse
|
||||||
|
@@ -322,7 +330,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
{ dup length 6 sub 6 exch getinterval }
|
||||||
|
if
|
||||||
|
% Check for font file headers.
|
||||||
|
- //false .scanfontheaders
|
||||||
|
+ //false //.scanfontheaders
|
||||||
|
{ 2 index exch .stringmatch or
|
||||||
|
}
|
||||||
|
forall exch pop
|
||||||
|
@@ -335,7 +343,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
{ exch copystring exch
|
||||||
|
DEBUG { ( ) print dup =only flush } if
|
||||||
|
1 index .definenativefontmap
|
||||||
|
- .splitfilename pop //true .scanfontdict 3 1 roll .growput
|
||||||
|
+ //.splitfilename exec pop //true //.scanfontdict 3 1 roll .growput
|
||||||
|
% Increment fontcount.
|
||||||
|
3 -1 roll 1 add 3 1 roll
|
||||||
|
}
|
||||||
|
@@ -352,7 +360,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
}
|
||||||
|
- .scan1fontstring filenameforall
|
||||||
|
+ //.scan1fontstring filenameforall
|
||||||
|
QUIET
|
||||||
|
{ pop pop pop }
|
||||||
|
{ ( ) print =only ( files, ) print =only ( scanned, ) print
|
||||||
|
@@ -422,7 +430,6 @@ systemdict /NONATIVEFONTMAP known .setnativefontmapbuilt
|
||||||
|
//true .setnativefontmapbuilt
|
||||||
|
} ifelse
|
||||||
|
} bind def
|
||||||
|
-currentdict /.setnativefontmapbuilt .forceundef
|
||||||
|
|
||||||
|
% Create the dictionary that registers the .buildfont procedure
|
||||||
|
% (called by definefont) for each FontType.
|
||||||
|
@@ -526,7 +533,8 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
% We use this only for explicitly aliased fonts, not substituted fonts:
|
||||||
|
% we think this matches the observed behavior of Adobe interpreters.
|
||||||
|
/.aliasfont % <name> <font> .aliasfont <newFont>
|
||||||
|
- { .currentglobal 3 1 roll dup .gcheck .setglobal
|
||||||
|
+ {
|
||||||
|
+ currentglobal 3 1 roll dup gcheck setglobal
|
||||||
|
% <bool> <name> <font>
|
||||||
|
dup length 2 add dict % <bool> <name> <font> <dict>
|
||||||
|
dup 3 -1 roll % <bool> <name> <dict> <dict> <font>
|
||||||
|
@@ -541,7 +549,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
% whose FontName is a local non-string, if someone passed a
|
||||||
|
% garbage value to findfont. In this case, just don't
|
||||||
|
% call definefont at all.
|
||||||
|
- 2 index dup type /stringtype eq exch .gcheck or 1 index .gcheck not or
|
||||||
|
+ 2 index dup type /stringtype eq exch gcheck or 1 index gcheck not or
|
||||||
|
{ pop % <bool> <name> <dict>
|
||||||
|
1 index dup type /stringtype eq { cvn } if
|
||||||
|
% <bool> <name> <dict> <name1>
|
||||||
|
@@ -566,10 +574,11 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
% Don't bind in definefont, since Level 2 redefines it.
|
||||||
|
/definefont .systemvar exec
|
||||||
|
}
|
||||||
|
- { /findfont cvx {.completefont} .errorexec pop exch pop
|
||||||
|
+ {
|
||||||
|
+ /findfont cvx {.completefont} //.errorexec exec pop exch pop
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
- exch .setglobal
|
||||||
|
+ exch setglobal
|
||||||
|
} odef % so findfont will bind it
|
||||||
|
|
||||||
|
% Define .loadfontfile for loading a font. If we recognize Type 1 and/or
|
||||||
|
@@ -669,10 +678,19 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
[(Cn) 4] [(Cond) 4] [(Narrow) 4] [(Pkg) 4] [(Compr) 4]
|
||||||
|
[(Serif) 8] [(Sans) -8]
|
||||||
|
] readonly def
|
||||||
|
+
|
||||||
|
+/.fontnamestring { % <fontname> .fontnamestring <string|name>
|
||||||
|
+ dup type dup /nametype eq {
|
||||||
|
+ pop .namestring
|
||||||
|
+ } {
|
||||||
|
+ /stringtype ne { pop () } if
|
||||||
|
+ } ifelse
|
||||||
|
+} bind def
|
||||||
|
+
|
||||||
|
/.fontnameproperties { % <int> <string|name> .fontnameproperties
|
||||||
|
% <int'>
|
||||||
|
- .fontnamestring
|
||||||
|
- .substituteproperties {
|
||||||
|
+ //.fontnamestring exec
|
||||||
|
+ //.substituteproperties {
|
||||||
|
2 copy 0 get search {
|
||||||
|
pop pop pop dup length 1 sub 1 exch getinterval 3 -1 roll exch {
|
||||||
|
dup 0 ge { or } { neg not and } ifelse
|
||||||
|
@@ -710,13 +728,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
% <other> .nametostring <other>
|
||||||
|
dup type /nametype eq { .namestring } if
|
||||||
|
} bind def
|
||||||
|
-/.fontnamestring { % <fontname> .fontnamestring <string|name>
|
||||||
|
- dup type dup /nametype eq {
|
||||||
|
- pop .namestring
|
||||||
|
- } {
|
||||||
|
- /stringtype ne { pop () } if
|
||||||
|
- } ifelse
|
||||||
|
-} bind def
|
||||||
|
+
|
||||||
|
/.substitutefontname { % <fontname> <properties> .substitutefontname
|
||||||
|
% <altname|null>
|
||||||
|
% Look for properties and/or a face name in the font name.
|
||||||
|
@@ -724,7 +736,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
% base font; otherwise, use the default font.
|
||||||
|
% Note that the "substituted" font name may be the same as
|
||||||
|
% the requested one; the caller must check this.
|
||||||
|
- exch .fontnamestring {
|
||||||
|
+ exch //.fontnamestring exec {
|
||||||
|
defaultfontname /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique
|
||||||
|
/Helvetica-Narrow /Helvetica-Narrow-Oblique
|
||||||
|
/Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique
|
||||||
|
@@ -734,12 +746,12 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
} 3 1 roll
|
||||||
|
% Stack: facelist properties fontname
|
||||||
|
% Look for a face name.
|
||||||
|
- .substitutefaces {
|
||||||
|
+ //.substitutefaces {
|
||||||
|
2 copy 0 get search {
|
||||||
|
pop pop pop
|
||||||
|
% Stack: facelist properties fontname [(pattern) family properties]
|
||||||
|
dup 2 get 4 -1 roll or 3 1 roll
|
||||||
|
- 1 get .substitutefamilies exch get
|
||||||
|
+ 1 get //.substitutefamilies exch get
|
||||||
|
4 -1 roll pop 3 1 roll
|
||||||
|
} {
|
||||||
|
pop pop
|
||||||
|
@@ -748,7 +760,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||||
|
1 index length mod get exec
|
||||||
|
} bind def
|
||||||
|
/.substitutefont { % <fontname> .substitutefont <altname>
|
||||||
|
- dup 0 exch .fontnameproperties .substitutefontname
|
||||||
|
+ dup 0 exch //.fontnameproperties exec .substitutefontname
|
||||||
|
% Only accept fonts known in the Fontmap.
|
||||||
|
Fontmap 1 index known not
|
||||||
|
{
|
||||||
|
@@ -814,7 +826,7 @@ FAKEFONTS not { (%END FAKEFONTS) .skipeof } if
|
||||||
|
counttomark 1 sub { .aliasfont } repeat end
|
||||||
|
% <fontname> mark <font>
|
||||||
|
exch pop exch pop
|
||||||
|
-} odef
|
||||||
|
+} bind odef
|
||||||
|
/findfont {
|
||||||
|
.findfont
|
||||||
|
} bind def
|
||||||
|
@@ -860,7 +872,7 @@ FAKEFONTS not { (%END FAKEFONTS) .skipeof } if
|
||||||
|
} {
|
||||||
|
dup .substitutefont
|
||||||
|
2 copy eq { pop defaultfontname } if
|
||||||
|
- .checkalias
|
||||||
|
+ //.checkalias exec
|
||||||
|
QUIET not {
|
||||||
|
SHORTERRORS {
|
||||||
|
(%%[) print 1 index =only
|
||||||
|
@@ -886,8 +898,8 @@ $error /SubstituteFont { } put
|
||||||
|
//null 0 1 FONTPATH length 1 sub {
|
||||||
|
FONTPATH 1 index get //null ne { exch pop exit } if pop
|
||||||
|
} for dup //null ne {
|
||||||
|
- dup 0 eq { .scanfontbegin } if
|
||||||
|
- FONTPATH 1 index get .scanfontdir
|
||||||
|
+ dup 0 eq { //.scanfontbegin exec} if
|
||||||
|
+ FONTPATH 1 index get //.scanfontdir exec
|
||||||
|
FONTPATH exch //null put //true
|
||||||
|
} {
|
||||||
|
pop //false
|
||||||
|
@@ -897,11 +909,10 @@ $error /SubstituteFont { } put
|
||||||
|
% scanning of FONTPATH.
|
||||||
|
/.dofindfont { % mark <fontname> .dofindfont % mark <alias> ... <font>
|
||||||
|
.tryfindfont not {
|
||||||
|
-
|
||||||
|
% We didn't find the font. If we haven't scanned
|
||||||
|
% all the directories in FONTPATH, scan the next one
|
||||||
|
% now and look for the font again.
|
||||||
|
- .scannextfontdir {
|
||||||
|
+ //.scannextfontdir exec {
|
||||||
|
% Start over with an empty alias list.
|
||||||
|
counttomark 1 sub { pop } repeat % mark <fontname>
|
||||||
|
.dofindfont
|
||||||
|
@@ -927,6 +938,7 @@ $error /SubstituteFont { } put
|
||||||
|
} if
|
||||||
|
% Substitute for the font. Don't alias.
|
||||||
|
% Same stack as at the beginning of .dofindfont.
|
||||||
|
+
|
||||||
|
$error /SubstituteFont get exec
|
||||||
|
%
|
||||||
|
% igorm: I guess the surrounding code assumes that .stdsubstfont
|
||||||
|
@@ -935,72 +947,11 @@ $error /SubstituteFont { } put
|
||||||
|
% used in .dofindfont and through .stdsubstfont
|
||||||
|
% just to represent a simple iteration,
|
||||||
|
% which accumulates the aliases after the mark.
|
||||||
|
- .stdsubstfont
|
||||||
|
+ //.stdsubstfont exec
|
||||||
|
} ifelse
|
||||||
|
} ifelse
|
||||||
|
} if
|
||||||
|
} bind def
|
||||||
|
-% Try to find a font using only the present contents of Fontmap.
|
||||||
|
-/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||||
|
- % <fontname> .tryfindfont false
|
||||||
|
- //.FontDirectory 1 index .fontknownget
|
||||||
|
- { % Already loaded
|
||||||
|
- exch pop //true
|
||||||
|
- }
|
||||||
|
- {
|
||||||
|
- dup Fontmap exch .knownget
|
||||||
|
- { //true //true }
|
||||||
|
- { % Unknown font name. Look for a file with the
|
||||||
|
- % same name as the requested font.
|
||||||
|
- dup .tryloadfont
|
||||||
|
- { exch pop //true //false }
|
||||||
|
- {
|
||||||
|
- % if we can't load by name check the native font map
|
||||||
|
- dup .nativeFontmap exch .knownget
|
||||||
|
- { //true //true }
|
||||||
|
- { //false //false } ifelse
|
||||||
|
- } ifelse
|
||||||
|
- } ifelse
|
||||||
|
-
|
||||||
|
- { % Try each element of the Fontmap in turn.
|
||||||
|
- pop
|
||||||
|
- //false exch % (in case we exhaust the list)
|
||||||
|
- % Stack: fontname false fontmaplist
|
||||||
|
- { exch pop
|
||||||
|
- dup type /nametype eq
|
||||||
|
- { % Font alias
|
||||||
|
- .checkalias .tryfindfont exit
|
||||||
|
- }
|
||||||
|
- { dup dup type dup /arraytype eq exch /packedarraytype eq or exch xcheck and
|
||||||
|
- { % Font with a procedural definition
|
||||||
|
- exec % The procedure will load the font.
|
||||||
|
- % Check to make sure this really happened.
|
||||||
|
- //.FontDirectory 1 index .knownget
|
||||||
|
- { exch pop //true exit }
|
||||||
|
- if
|
||||||
|
- }
|
||||||
|
- { % Font file name
|
||||||
|
- //true .loadfontloop { //true exit } if
|
||||||
|
- }
|
||||||
|
- ifelse
|
||||||
|
- }
|
||||||
|
- ifelse //false
|
||||||
|
- }
|
||||||
|
- forall
|
||||||
|
- % Stack: font true -or- fontname false
|
||||||
|
- { //true
|
||||||
|
- }
|
||||||
|
- { % None of the Fontmap entries worked.
|
||||||
|
- % Try loading a file with the same name
|
||||||
|
- % as the requested font.
|
||||||
|
- .tryloadfont
|
||||||
|
- }
|
||||||
|
- ifelse
|
||||||
|
- }
|
||||||
|
- if
|
||||||
|
- }
|
||||||
|
- ifelse
|
||||||
|
- } bind def
|
||||||
|
|
||||||
|
% any user of .putgstringcopy must use bind and executeonly
|
||||||
|
/.putgstringcopy % <dict> <name> <string> .putgstringcopy -
|
||||||
|
@@ -1014,25 +965,6 @@ $error /SubstituteFont { } put
|
||||||
|
} executeonly ifelse
|
||||||
|
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||||
|
|
||||||
|
-% Attempt to load a font from a file.
|
||||||
|
-/.tryloadfont { % <fontname> .tryloadfont <font> true
|
||||||
|
- % <fontname> .tryloadfont false
|
||||||
|
- dup .nametostring
|
||||||
|
- % Hack: check for the presence of the resource machinery.
|
||||||
|
- /.genericrfn where {
|
||||||
|
- pop
|
||||||
|
- pop dup .fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||||
|
- {//false .loadfontloop} .internalstopped {//false} if {
|
||||||
|
- //true
|
||||||
|
- } {
|
||||||
|
- dup .nametostring
|
||||||
|
- {//true .loadfontloop} .internalstopped {//false} if
|
||||||
|
- } ifelse
|
||||||
|
- } {
|
||||||
|
- {//true .loadfontloop} .internalstopped {//false} if
|
||||||
|
- } ifelse
|
||||||
|
-} bind def
|
||||||
|
-
|
||||||
|
/.loadfontloop { % <fontname> <filename> <libflag> .loadfontloop
|
||||||
|
% <font> true
|
||||||
|
% -or-
|
||||||
|
@@ -1102,7 +1034,7 @@ $error /SubstituteFont { } put
|
||||||
|
} if
|
||||||
|
|
||||||
|
% Check to make sure the font was actually loaded.
|
||||||
|
- dup 3 index .fontknownget
|
||||||
|
+ dup 3 index //.fontknownget exec
|
||||||
|
{ dup /PathLoad 4 index .putgstringcopy
|
||||||
|
4 1 roll pop pop pop //true exit
|
||||||
|
} executeonly if
|
||||||
|
@@ -1113,7 +1045,7 @@ $error /SubstituteFont { } put
|
||||||
|
exch dup % Stack: origfontname fontdirectory path path
|
||||||
|
(r) file .findfontname
|
||||||
|
{ % Stack: origfontname fontdirectory path filefontname
|
||||||
|
- 2 index 1 index .fontknownget
|
||||||
|
+ 2 index 1 index //.fontknownget exec
|
||||||
|
{ % Yes. Stack: origfontname fontdirectory path filefontname fontdict
|
||||||
|
dup 4 -1 roll /PathLoad exch .putgstringcopy
|
||||||
|
% Stack: origfontname fontdirectory filefontname fontdict
|
||||||
|
@@ -1136,7 +1068,7 @@ $error /SubstituteFont { } put
|
||||||
|
% Stack: fontdict
|
||||||
|
} executeonly
|
||||||
|
if pop % Stack: origfontname fontdirectory path
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
if pop pop % Stack: origfontname
|
||||||
|
|
||||||
|
% The font definitely did not load correctly.
|
||||||
|
@@ -1150,7 +1082,87 @@ $error /SubstituteFont { } put
|
||||||
|
|
||||||
|
} bind executeonly odef % must be bound and hidden for .putgstringcopy
|
||||||
|
|
||||||
|
-currentdict /.putgstringcopy .undef
|
||||||
|
+% Attempt to load a font from a file.
|
||||||
|
+/.tryloadfont { % <fontname> .tryloadfont <font> true
|
||||||
|
+ % <fontname> .tryloadfont false
|
||||||
|
+ dup //.nametostring exec
|
||||||
|
+ % Hack: check for the presence of the resource machinery.
|
||||||
|
+ /.genericrfn where {
|
||||||
|
+ pop
|
||||||
|
+ pop dup //.fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||||
|
+ {//false .loadfontloop} .internalstopped {//false} if {
|
||||||
|
+ //true
|
||||||
|
+ } {
|
||||||
|
+ dup //.nametostring exec
|
||||||
|
+ {//true .loadfontloop} .internalstopped {//false} if
|
||||||
|
+ } ifelse
|
||||||
|
+ } {
|
||||||
|
+ {//true .loadfontloop} .internalstopped {//false} if
|
||||||
|
+ } ifelse
|
||||||
|
+} bind def
|
||||||
|
+
|
||||||
|
+% Try to find a font using only the present contents of Fontmap.
|
||||||
|
+/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||||
|
+ % <fontname> .tryfindfont false
|
||||||
|
+ //.FontDirectory 1 index //.fontknownget exec
|
||||||
|
+ { % Already loaded
|
||||||
|
+ exch pop //true
|
||||||
|
+ }
|
||||||
|
+ {
|
||||||
|
+ dup Fontmap exch .knownget
|
||||||
|
+ { //true //true }
|
||||||
|
+ { % Unknown font name. Look for a file with the
|
||||||
|
+ % same name as the requested font.
|
||||||
|
+ dup //.tryloadfont exec
|
||||||
|
+ { exch pop //true //false }
|
||||||
|
+ {
|
||||||
|
+ % if we can't load by name check the native font map
|
||||||
|
+ dup .nativeFontmap exch .knownget
|
||||||
|
+ { //true //true }
|
||||||
|
+ { //false //false } ifelse
|
||||||
|
+ } ifelse
|
||||||
|
+ } ifelse
|
||||||
|
+
|
||||||
|
+ { % Try each element of the Fontmap in turn.
|
||||||
|
+ pop
|
||||||
|
+ //false exch % (in case we exhaust the list)
|
||||||
|
+ % Stack: fontname false fontmaplist
|
||||||
|
+ { exch pop
|
||||||
|
+ dup type /nametype eq
|
||||||
|
+ { % Font alias
|
||||||
|
+ //.checkalias exec
|
||||||
|
+ .tryfindfont exit
|
||||||
|
+ }
|
||||||
|
+ { dup dup type dup /arraytype eq exch /packedarraytype eq or exch xcheck and
|
||||||
|
+ { % Font with a procedural definition
|
||||||
|
+ exec % The procedure will load the font.
|
||||||
|
+ % Check to make sure this really happened.
|
||||||
|
+ //.FontDirectory 1 index .knownget
|
||||||
|
+ { exch pop //true exit }
|
||||||
|
+ if
|
||||||
|
+ }
|
||||||
|
+ { % Font file name
|
||||||
|
+ //true .loadfontloop { //true exit } if
|
||||||
|
+ }
|
||||||
|
+ ifelse
|
||||||
|
+ }
|
||||||
|
+ ifelse //false
|
||||||
|
+ }
|
||||||
|
+ forall
|
||||||
|
+ % Stack: font true -or- fontname false
|
||||||
|
+ { //true
|
||||||
|
+ }
|
||||||
|
+ { % None of the Fontmap entries worked.
|
||||||
|
+ % Try loading a file with the same name
|
||||||
|
+ % as the requested font.
|
||||||
|
+ //.tryloadfont exec
|
||||||
|
+ }
|
||||||
|
+ ifelse
|
||||||
|
+ }
|
||||||
|
+ if
|
||||||
|
+ }
|
||||||
|
+ ifelse
|
||||||
|
+ } bind def
|
||||||
|
|
||||||
|
% Define a procedure to load all known fonts.
|
||||||
|
% This isn't likely to be very useful.
|
||||||
|
@@ -1192,9 +1204,9 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||||
|
/.loadinitialfonts
|
||||||
|
{ NOFONTMAP not
|
||||||
|
{ /FONTMAP where
|
||||||
|
- { pop [ FONTMAP .pathlist ]
|
||||||
|
+ { pop [ FONTMAP //.pathlist exec]
|
||||||
|
{ dup VMDEBUG findlibfile
|
||||||
|
- { exch pop .loadFontmap }
|
||||||
|
+ { exch pop //.loadFontmap exec }
|
||||||
|
{ /undefinedfilename signalerror }
|
||||||
|
ifelse
|
||||||
|
}
|
||||||
|
@@ -1208,7 +1220,7 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||||
|
pop pop
|
||||||
|
defaultfontmap_content { .definefontmap } forall
|
||||||
|
} {
|
||||||
|
- .loadFontmap
|
||||||
|
+ //.loadFontmap exec
|
||||||
|
} ifelse
|
||||||
|
} {
|
||||||
|
pop pop
|
||||||
|
@@ -1272,3 +1284,18 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||||
|
{ .makemodifiedfont
|
||||||
|
dup /FontName get exch definefont pop
|
||||||
|
} bind def
|
||||||
|
+
|
||||||
|
+% Undef these, not needed outside this file
|
||||||
|
+[
|
||||||
|
+ % /.fonttempstring /.scannextfontdir - are also used in gs_res.ps, so are undefined there
|
||||||
|
+ % /.fontnameproperties - is used in pdf_font.ps
|
||||||
|
+ % /.scanfontheaders - used in gs_cff.ps, gs_ttf.ps
|
||||||
|
+ /.loadfontloop /.tryloadfont /.findfont /.pathlist /.loadFontmap /.lowerstring
|
||||||
|
+ /.splitfilename /.scanfontdict /.scanfontbegin
|
||||||
|
+ /.scanfontskip /.scan1fontstring
|
||||||
|
+ /.scan1fontfirst /.scanfontdir
|
||||||
|
+ /.setnativefontmapbuilt /.aliasfont
|
||||||
|
+ /.setloadingfont /.substitutefaces /.substituteproperties /.substitutefamilies
|
||||||
|
+ /.nametostring /.fontnamestring /.checkalias /.fontknownget /.stdsubstfont
|
||||||
|
+ /.putgstringcopy
|
||||||
|
+] {systemdict exch .forceundef} forall
|
||||||
|
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||||
|
index d9b34599e7c2..fd7eaf953ae9 100644
|
||||||
|
--- a/Resource/Init/gs_res.ps
|
||||||
|
+++ b/Resource/Init/gs_res.ps
|
||||||
|
@@ -961,7 +961,7 @@ userdict /.localcsdefaults //false put
|
||||||
|
dup type /nametype eq { .namestring } if
|
||||||
|
dup type /stringtype ne { //false exit } if
|
||||||
|
% Check the resource directory.
|
||||||
|
- dup .fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||||
|
+ dup //.fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||||
|
status {
|
||||||
|
pop pop pop pop //true exit
|
||||||
|
} if
|
||||||
|
@@ -969,7 +969,7 @@ userdict /.localcsdefaults //false put
|
||||||
|
% as the font.
|
||||||
|
findlibfile { closefile //true exit } if
|
||||||
|
% Scan a FONTPATH directory and try again.
|
||||||
|
- .scannextfontdir not { //false exit } if
|
||||||
|
+ //.scannextfontdir exec not { //false exit } if
|
||||||
|
} loop
|
||||||
|
} bind def
|
||||||
|
|
||||||
|
@@ -1008,7 +1008,7 @@ currentdict /.fontstatusaux .undef
|
||||||
|
} ifelse
|
||||||
|
} bind executeonly
|
||||||
|
/ResourceForAll {
|
||||||
|
- { .scannextfontdir not { exit } if } loop
|
||||||
|
+ { //.scannextfontdir exec not { exit } if } loop
|
||||||
|
/Generic /Category findresource /ResourceForAll get exec
|
||||||
|
} bind executeonly
|
||||||
|
/.ResourceFileStatus {
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,345 @@
|
|||||||
|
From ba2336b3b1ca5cfe1e67dbe37a084c9644a65ac7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Liddell <chris.liddell@artifex.com>
|
||||||
|
Date: Fri, 11 Jan 2019 13:36:36 +0000
|
||||||
|
Subject: [PATCH] Remove .forcedef, and harden .force* ops more
|
||||||
|
|
||||||
|
Remove .forcedef and replace all uses with a direct call to .forceput instead.
|
||||||
|
|
||||||
|
Ensure every procedure (named and trasient) that calls .forceput is
|
||||||
|
executeonly.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 49c8092da88e
|
||||||
|
|
||||||
|
Resource/Init/gs_dps1.ps | 15 +++++++-----
|
||||||
|
Resource/Init/gs_init.ps | 28 ++++++++-------------
|
||||||
|
Resource/Init/gs_lev2.ps | 51 +++++++++++++++++++--------------------
|
||||||
|
Resource/Init/gs_ll3.ps | 5 ++--
|
||||||
|
Resource/Init/gs_res.ps | 29 +++++++++++-----------
|
||||||
|
Resource/Init/gs_statd.ps | 4 +--
|
||||||
|
6 files changed, 63 insertions(+), 69 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||||
|
index 8700c8cb304b..3d2cf7a1ad01 100644
|
||||||
|
--- a/Resource/Init/gs_dps1.ps
|
||||||
|
+++ b/Resource/Init/gs_dps1.ps
|
||||||
|
@@ -33,14 +33,17 @@ systemdict begin
|
||||||
|
|
||||||
|
/SharedFontDirectory .FontDirectory .gcheck
|
||||||
|
{ .currentglobal //false .setglobal
|
||||||
|
+ currentdict
|
||||||
|
/LocalFontDirectory .FontDirectory dup maxlength dict copy
|
||||||
|
- .forcedef % LocalFontDirectory is local, systemdict is global
|
||||||
|
+ .forceput % LocalFontDirectory is local, systemdict is global
|
||||||
|
.setglobal .FontDirectory
|
||||||
|
- }
|
||||||
|
- { /LocalFontDirectory .FontDirectory
|
||||||
|
- .forcedef % LocalFontDirectory is local, systemdict is global
|
||||||
|
+ } executeonly
|
||||||
|
+ {
|
||||||
|
+ currentdict
|
||||||
|
+ /LocalFontDirectory .FontDirectory
|
||||||
|
+ .forceput % LocalFontDirectory is local, systemdict is global
|
||||||
|
50 dict
|
||||||
|
- }
|
||||||
|
+ }executeonly
|
||||||
|
ifelse def
|
||||||
|
|
||||||
|
end % systemdict
|
||||||
|
@@ -55,7 +58,7 @@ level2dict begin
|
||||||
|
{ //SharedFontDirectory }
|
||||||
|
{ /LocalFontDirectory .systemvar } % can't embed ref to local VM
|
||||||
|
ifelse .forceput pop % LocalFontDirectory is local, systemdict is global
|
||||||
|
- } .bind odef
|
||||||
|
+ } .bind executeonly odef
|
||||||
|
% Don't just copy (load) the definition of .setglobal:
|
||||||
|
% it gets redefined for LL3.
|
||||||
|
/setshared { /.setglobal .systemvar exec } odef
|
||||||
|
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||||
|
index d9a0829f7f97..45bebf479bae 100644
|
||||||
|
--- a/Resource/Init/gs_init.ps
|
||||||
|
+++ b/Resource/Init/gs_init.ps
|
||||||
|
@@ -54,7 +54,7 @@ systemdict exch
|
||||||
|
dup /userdict
|
||||||
|
currentdict dup 200 .setmaxlength % userdict
|
||||||
|
.forceput % userdict is local, systemdict is global
|
||||||
|
- }
|
||||||
|
+ } executeonly
|
||||||
|
if begin
|
||||||
|
|
||||||
|
% Define dummy local/global operators if needed.
|
||||||
|
@@ -299,13 +299,6 @@ QUIET not { printgreeting flush } if
|
||||||
|
1 index exch .makeoperator def
|
||||||
|
} .bind def
|
||||||
|
|
||||||
|
-% Define a special version of def for storing local objects into global
|
||||||
|
-% dictionaries. Like .forceput, this exists only during initialization.
|
||||||
|
-/.forcedef { % <key> <value> .forcedef -
|
||||||
|
- 1 .argindex pop % check # of args
|
||||||
|
- currentdict 3 1 roll .forceput
|
||||||
|
-} .bind odef
|
||||||
|
-
|
||||||
|
% Define procedures for accessing variables in systemdict and userdict
|
||||||
|
% regardless of the contents of the dictionary stack.
|
||||||
|
/.systemvar { % <name> .systemvar <value>
|
||||||
|
@@ -347,7 +340,7 @@ DELAYBIND
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
} .bind def
|
||||||
|
-} if
|
||||||
|
+} executeonly if
|
||||||
|
|
||||||
|
%**************** BACKWARD COMPATIBILITY ****************
|
||||||
|
/hwsizedict mark /HWSize //null .dicttomark readonly def
|
||||||
|
@@ -655,7 +648,7 @@ currentdict /.typenames .undef
|
||||||
|
/ifelse .systemvar
|
||||||
|
] cvx executeonly
|
||||||
|
exch .setglobal
|
||||||
|
-} odef
|
||||||
|
+} executeonly odef
|
||||||
|
systemdict /internaldict dup .makeinternaldict .makeoperator
|
||||||
|
.forceput % proc is local, systemdict is global
|
||||||
|
|
||||||
|
@@ -1093,7 +1086,7 @@ def
|
||||||
|
|
||||||
|
% Define $error. This must be in local VM.
|
||||||
|
.currentglobal //false .setglobal
|
||||||
|
-/$error 40 dict .forcedef % $error is local, systemdict is global
|
||||||
|
+currentdict /$error 40 dict .forceput % $error is local, systemdict is global
|
||||||
|
% newerror, errorname, command, errorinfo,
|
||||||
|
% ostack, estack, dstack, recordstacks,
|
||||||
|
% binary, globalmode,
|
||||||
|
@@ -1112,8 +1105,8 @@ end
|
||||||
|
% Define errordict similarly. It has one entry per error name,
|
||||||
|
% plus handleerror. However, some astonishingly badly written PostScript
|
||||||
|
% files require it to have at least one empty slot.
|
||||||
|
-/errordict ErrorNames length 3 add dict
|
||||||
|
-.forcedef % errordict is local, systemdict is global
|
||||||
|
+currentdict /errordict ErrorNames length 3 add dict
|
||||||
|
+.forceput % errordict is local, systemdict is global
|
||||||
|
.setglobal % back to global VM
|
||||||
|
% gserrordict contains all the default error handling methods, but unlike
|
||||||
|
% errordict it is noaccess after creation (also it is in global VM).
|
||||||
|
@@ -1273,8 +1266,9 @@ end
|
||||||
|
(END PROCS) VMDEBUG
|
||||||
|
|
||||||
|
% Define the font directory.
|
||||||
|
+currentdict
|
||||||
|
/FontDirectory //false .setglobal 100 dict //true .setglobal
|
||||||
|
-.forcedef % FontDirectory is local, systemdict is global
|
||||||
|
+.forceput % FontDirectory is local, systemdict is global
|
||||||
|
|
||||||
|
% Define the encoding dictionary.
|
||||||
|
/EncodingDirectory 16 dict def % enough for Level 2 + PDF standard encodings
|
||||||
|
@@ -2333,7 +2327,6 @@ SAFER { .setsafeglobal } if
|
||||||
|
//systemdict /UndefinePostScriptOperators get exec
|
||||||
|
//systemdict /UndefinePDFOperators get exec
|
||||||
|
//systemdict /.forcecopynew .forceundef % remove temptation
|
||||||
|
- //systemdict /.forcedef .forceundef % ditto
|
||||||
|
//systemdict /.forceput .forceundef % ditto
|
||||||
|
//systemdict /.undef .forceundef % ditto
|
||||||
|
//systemdict /.forceundef .forceundef % ditto
|
||||||
|
@@ -2368,9 +2361,9 @@ SAFER { .setsafeglobal } if
|
||||||
|
% (and, if implemented, context switching).
|
||||||
|
.currentglobal //false .setglobal
|
||||||
|
mark userparams { } forall .dicttomark readonly
|
||||||
|
- /userparams exch .forcedef % systemdict is read-only
|
||||||
|
+ currentdict exch /userparams exch .forceput % systemdict is read-only
|
||||||
|
.setglobal
|
||||||
|
-} if
|
||||||
|
+} executeonly if
|
||||||
|
/.currentsystemparams where {
|
||||||
|
pop
|
||||||
|
% Remove real system params from pssystemparams.
|
||||||
|
@@ -2458,7 +2451,6 @@ end
|
||||||
|
DELAYBIND not {
|
||||||
|
systemdict /.bindnow .undef % We only need this for DELAYBIND
|
||||||
|
systemdict /.forcecopynew .undef % remove temptation
|
||||||
|
- systemdict /.forcedef .undef % ditto
|
||||||
|
systemdict /.forceput .undef % ditto
|
||||||
|
systemdict /.forceundef .undef % ditto
|
||||||
|
} if
|
||||||
|
diff --git a/Resource/Init/gs_lev2.ps b/Resource/Init/gs_lev2.ps
|
||||||
|
index 0f0d57331c23..9c0c3a6fc485 100644
|
||||||
|
--- a/Resource/Init/gs_lev2.ps
|
||||||
|
+++ b/Resource/Init/gs_lev2.ps
|
||||||
|
@@ -304,31 +304,30 @@ end
|
||||||
|
psuserparams exch /.checkFilePermitparams load put
|
||||||
|
.setglobal
|
||||||
|
|
||||||
|
-pssystemparams begin
|
||||||
|
- /CurDisplayList 0 .forcedef
|
||||||
|
- /CurFormCache 0 .forcedef
|
||||||
|
- /CurInputDevice () .forcedef
|
||||||
|
- /CurOutlineCache 0 .forcedef
|
||||||
|
- /CurOutputDevice () .forcedef
|
||||||
|
- /CurPatternCache 0 .forcedef
|
||||||
|
- /CurUPathCache 0 .forcedef
|
||||||
|
- /CurScreenStorage 0 .forcedef
|
||||||
|
- /CurSourceList 0 .forcedef
|
||||||
|
- /DoPrintErrors //false .forcedef
|
||||||
|
- /JobTimeout 0 .forcedef
|
||||||
|
- /LicenseID (LN-001) .forcedef % bogus
|
||||||
|
- /MaxDisplayList 140000 .forcedef
|
||||||
|
- /MaxFormCache 100000 .forcedef
|
||||||
|
- /MaxImageBuffer 524288 .forcedef
|
||||||
|
- /MaxOutlineCache 65000 .forcedef
|
||||||
|
- /MaxPatternCache 100000 .forcedef
|
||||||
|
- /MaxUPathCache 300000 .forcedef
|
||||||
|
- /MaxScreenStorage 84000 .forcedef
|
||||||
|
- /MaxSourceList 25000 .forcedef
|
||||||
|
- /PrinterName product .forcedef
|
||||||
|
- /RamSize 4194304 .forcedef
|
||||||
|
- /WaitTimeout 40 .forcedef
|
||||||
|
-end
|
||||||
|
+pssystemparams
|
||||||
|
+dup /CurDisplayList 0 .forceput
|
||||||
|
+dup /CurFormCache 0 .forceput
|
||||||
|
+dup /CurInputDevice () .forceput
|
||||||
|
+dup /CurOutlineCache 0 .forceput
|
||||||
|
+dup /CurOutputDevice () .forceput
|
||||||
|
+dup /CurPatternCache 0 .forceput
|
||||||
|
+dup /CurUPathCache 0 .forceput
|
||||||
|
+dup /CurScreenStorage 0 .forceput
|
||||||
|
+dup /CurSourceList 0 .forceput
|
||||||
|
+dup /DoPrintErrors //false .forceput
|
||||||
|
+dup /JobTimeout 0 .forceput
|
||||||
|
+dup /LicenseID (LN-001) .forceput % bogus
|
||||||
|
+dup /MaxDisplayList 140000 .forceput
|
||||||
|
+dup /MaxFormCache 100000 .forceput
|
||||||
|
+dup /MaxImageBuffer 524288 .forceput
|
||||||
|
+dup /MaxOutlineCache 65000 .forceput
|
||||||
|
+dup /MaxPatternCache 100000 .forceput
|
||||||
|
+dup /MaxUPathCache 300000 .forceput
|
||||||
|
+dup /MaxScreenStorage 84000 .forceput
|
||||||
|
+dup /MaxSourceList 25000 .forceput
|
||||||
|
+dup /PrinterName product .forceput
|
||||||
|
+dup /RamSize 4194304 .forceput
|
||||||
|
+ /WaitTimeout 40 .forceput
|
||||||
|
|
||||||
|
% Define the procedures for handling comment scanning. The names
|
||||||
|
% %ProcessComment and %ProcessDSCComment are known to the interpreter.
|
||||||
|
@@ -710,7 +709,7 @@ pop % currentsystemparams
|
||||||
|
/statusdict currentdict def
|
||||||
|
|
||||||
|
currentdict end
|
||||||
|
-/statusdict exch .forcedef % statusdict is local, systemdict is global
|
||||||
|
+currentdict exch /statusdict exch .forceput % statusdict is local, systemdict is global
|
||||||
|
|
||||||
|
% The following compatibility operators are in systemdict. They are
|
||||||
|
% defined here, rather than in gs_init.ps, because they require the
|
||||||
|
diff --git a/Resource/Init/gs_ll3.ps b/Resource/Init/gs_ll3.ps
|
||||||
|
index c86721f39fc0..881af44e9fd2 100644
|
||||||
|
--- a/Resource/Init/gs_ll3.ps
|
||||||
|
+++ b/Resource/Init/gs_ll3.ps
|
||||||
|
@@ -521,9 +521,8 @@ end
|
||||||
|
% Define additional user and system parameters.
|
||||||
|
/HalftoneMode 0 .definepsuserparam
|
||||||
|
/MaxSuperScreen 1016 .definepsuserparam
|
||||||
|
-pssystemparams begin % read-only, so use .forcedef
|
||||||
|
- /MaxDisplayAndSourceList 160000 .forcedef
|
||||||
|
-end
|
||||||
|
+% read-only, so use .forceput
|
||||||
|
+pssystemparams /MaxDisplayAndSourceList 160000 .forceput
|
||||||
|
|
||||||
|
% Define the IdiomSet resource category.
|
||||||
|
{ /IdiomSet } {
|
||||||
|
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||||
|
index fd7eaf953ae9..0b4e0514b2a1 100644
|
||||||
|
--- a/Resource/Init/gs_res.ps
|
||||||
|
+++ b/Resource/Init/gs_res.ps
|
||||||
|
@@ -41,10 +41,10 @@ level2dict begin
|
||||||
|
% However, Ed Taft of Adobe says their interpreters don't implement this
|
||||||
|
% either, so we aren't going to worry about it for a while.
|
||||||
|
|
||||||
|
-currentglobal //false setglobal systemdict begin
|
||||||
|
- /localinstancedict 5 dict
|
||||||
|
- .forcedef % localinstancedict is local, systemdict is global
|
||||||
|
-end //true setglobal
|
||||||
|
+currentglobal //false setglobal
|
||||||
|
+ systemdict /localinstancedict 5 dict
|
||||||
|
+ .forceput % localinstancedict is local, systemdict is global
|
||||||
|
+//true setglobal
|
||||||
|
/.emptydict 0 dict readonly def
|
||||||
|
setglobal
|
||||||
|
|
||||||
|
@@ -149,7 +149,7 @@ setglobal
|
||||||
|
dup [ exch 0 -1 ] exch
|
||||||
|
.Instances 4 2 roll put
|
||||||
|
% Make the Category dictionary read-only. We will have to
|
||||||
|
- % use .forceput / .forcedef later to replace the dummy,
|
||||||
|
+ % use .forceput / .forceput later to replace the dummy,
|
||||||
|
% empty .Instances dictionary with the real one later.
|
||||||
|
readonly
|
||||||
|
}{
|
||||||
|
@@ -304,7 +304,8 @@ systemdict begin
|
||||||
|
dup () ne {
|
||||||
|
.file_name_directory_separator concatstrings
|
||||||
|
} if
|
||||||
|
- 2 index exch //false .file_name_combine not {
|
||||||
|
+ 2 index exch //false
|
||||||
|
+ .file_name_combine not {
|
||||||
|
(Error: .default_resource_dir returned ) print exch print ( that can't combine with ) print =
|
||||||
|
/.default_resource_dir cvx /configurationerror signalerror
|
||||||
|
} if
|
||||||
|
@@ -317,14 +318,14 @@ currentdict /pssystemparams known not {
|
||||||
|
pssystemparams begin
|
||||||
|
.default_resource_dir
|
||||||
|
/FontResourceDir (Font) .resource_dir_name
|
||||||
|
- readonly .forcedef % pssys'params is r-o
|
||||||
|
+ readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||||
|
/GenericResourceDir () .resource_dir_name
|
||||||
|
- readonly .forcedef % pssys'params is r-o
|
||||||
|
+ readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||||
|
pop % .default_resource_dir
|
||||||
|
/GenericResourcePathSep
|
||||||
|
- .file_name_separator readonly .forcedef % pssys'params is r-o
|
||||||
|
- (%diskFontResourceDir) cvn (/Resource/Font/) readonly .forcedef % pssys'params is r-o
|
||||||
|
- (%diskGenericResourceDir) cvn (/Resource/) readonly .forcedef % pssys'params is r-o
|
||||||
|
+ .file_name_separator readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||||
|
+ currentdict (%diskFontResourceDir) cvn (/Resource/Font/) readonly .forceput % pssys'params is r-o
|
||||||
|
+ currentdict (%diskGenericResourceDir) cvn (/Resource/) readonly .forceput % pssys'params is r-o
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@@ -422,8 +423,8 @@ status {
|
||||||
|
.Instances dup //.emptydict eq {
|
||||||
|
pop 3 dict
|
||||||
|
% As noted above, Category dictionaries are read-only,
|
||||||
|
- % so we have to use .forcedef here.
|
||||||
|
- /.Instances 1 index .forcedef % Category dict is read-only
|
||||||
|
+ % so we have to use .forceput here.
|
||||||
|
+ currentdict /.Instances 2 index .forceput % Category dict is read-only
|
||||||
|
} executeonly if
|
||||||
|
}
|
||||||
|
{ .LocalInstances dup //.emptydict eq
|
||||||
|
@@ -441,7 +442,7 @@ status {
|
||||||
|
{ /defineresource cvx /typecheck signaloperror
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
-} .bind executeonly .makeoperator % executeonly to prevent access to .forcedef
|
||||||
|
+} .bind executeonly .makeoperator % executeonly to prevent access to .forceput
|
||||||
|
/UndefineResource
|
||||||
|
{ { dup 2 index .knownget
|
||||||
|
{ dup 1 get 1 ge
|
||||||
|
diff --git a/Resource/Init/gs_statd.ps b/Resource/Init/gs_statd.ps
|
||||||
|
index 20d4c96c4f8f..b6a76590dd09 100644
|
||||||
|
--- a/Resource/Init/gs_statd.ps
|
||||||
|
+++ b/Resource/Init/gs_statd.ps
|
||||||
|
@@ -21,10 +21,10 @@ systemdict begin
|
||||||
|
% We make statusdict a little larger for Level 2 stuff.
|
||||||
|
% Note that it must be allocated in local VM.
|
||||||
|
.currentglobal //false .setglobal
|
||||||
|
- /statusdict 91 dict .forcedef % statusdict is local, sys'dict global
|
||||||
|
+ currentdict /statusdict 91 dict .forceput % statusdict is local, sys'dict global
|
||||||
|
% To support the Level 2 job control features,
|
||||||
|
% serverdict must also be in local VM.
|
||||||
|
- /serverdict 10 dict .forcedef % serverdict is local, sys'dict global
|
||||||
|
+ currentdict /serverdict 10 dict .forceput % serverdict is local, sys'dict global
|
||||||
|
.setglobal
|
||||||
|
end
|
||||||
|
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -11,22 +11,21 @@ GOOGLEFONTDIRECTORY_FONTS = \
|
|||||||
$(call qstrip,$(BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS))
|
$(call qstrip,$(BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS))
|
||||||
|
|
||||||
ifneq ($(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
ifneq ($(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
||||||
GOOGLEFONTDIRECTORY_LICENSE += Apache-2.0
|
GOOGLEFONTDIRECTORY_ALL_LICENSES += Apache-2.0
|
||||||
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENSE.txt,$(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENSE.txt,$(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
ifneq ($(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
||||||
GOOGLEFONTDIRECTORY_LICENSE += OFL-1.1
|
GOOGLEFONTDIRECTORY_ALL_LICENSES += OFL-1.1
|
||||||
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /OFL.txt,$(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /OFL.txt,$(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
ifneq ($(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)
|
||||||
GOOGLEFONTDIRECTORY_LICENSE += UFL-1.1
|
GOOGLEFONTDIRECTORY_ALL_LICENSES += UFL-1.1
|
||||||
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENCE.txt,$(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
GOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENCE.txt,$(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# check-package OverriddenVariable
|
GOOGLEFONTDIRECTORY_LICENSE = $(subst $(space),$(comma)$(space),$(GOOGLEFONTDIRECTORY_ALL_LICENSES))
|
||||||
GOOGLEFONTDIRECTORY_LICENSE := $(subst $(space),$(comma)$(space),$(GOOGLEFONTDIRECTORY_LICENSE))
|
|
||||||
|
|
||||||
define GOOGLEFONTDIRECTORY_INSTALL_TARGET_CMDS
|
define GOOGLEFONTDIRECTORY_INSTALL_TARGET_CMDS
|
||||||
$(foreach d,$(GOOGLEFONTDIRECTORY_FONTS), \
|
$(foreach d,$(GOOGLEFONTDIRECTORY_FONTS), \
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
From 3d9c64e9f8aa1ee954d1d0bb3390fc894bb84da3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: DRC <information@libjpeg-turbo.org>
|
||||||
|
Date: Tue, 1 Jan 2019 18:57:36 -0600
|
||||||
|
Subject: [PATCH] tjLoadImage(): Fix int overflow/segfault w/big BMP
|
||||||
|
|
||||||
|
Fixes #304
|
||||||
|
|
||||||
|
[baruch: drop the ChangeLog.md hunk]
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 3d9c64e9f8aa
|
||||||
|
|
||||||
|
ChangeLog.md | 4 ++++
|
||||||
|
turbojpeg.c | 9 ++++++---
|
||||||
|
2 files changed, 10 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/turbojpeg.c b/turbojpeg.c
|
||||||
|
index 90a9ce6a0be8..3f7cd640677f 100644
|
||||||
|
--- a/turbojpeg.c
|
||||||
|
+++ b/turbojpeg.c
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/*
|
||||||
|
- * Copyright (C)2009-2018 D. R. Commander. All Rights Reserved.
|
||||||
|
+ * Copyright (C)2009-2019 D. R. Commander. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
@@ -1960,7 +1960,8 @@ DLLEXPORT unsigned char *tjLoadImage(const char *filename, int *width,
|
||||||
|
int align, int *height, int *pixelFormat,
|
||||||
|
int flags)
|
||||||
|
{
|
||||||
|
- int retval = 0, tempc, pitch;
|
||||||
|
+ int retval = 0, tempc;
|
||||||
|
+ size_t pitch;
|
||||||
|
tjhandle handle = NULL;
|
||||||
|
tjinstance *this;
|
||||||
|
j_compress_ptr cinfo = NULL;
|
||||||
|
@@ -2013,7 +2014,9 @@ DLLEXPORT unsigned char *tjLoadImage(const char *filename, int *width,
|
||||||
|
*pixelFormat = cs2pf[cinfo->in_color_space];
|
||||||
|
|
||||||
|
pitch = PAD((*width) * tjPixelSize[*pixelFormat], align);
|
||||||
|
- if ((dstBuf = (unsigned char *)malloc(pitch * (*height))) == NULL)
|
||||||
|
+ if ((unsigned long long)pitch * (unsigned long long)(*height) >
|
||||||
|
+ (unsigned long long)((size_t)-1) ||
|
||||||
|
+ (dstBuf = (unsigned char *)malloc(pitch * (*height))) == NULL)
|
||||||
|
_throwg("tjLoadImage(): Memory allocation failure");
|
||||||
|
|
||||||
|
if (setjmp(this->jerr.setjmp_buffer)) {
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From f8cca819a4fb42aafa5f70df43c45e8c416d716f Mon Sep 17 00:00:00 2001
|
||||||
|
From: DRC <information@libjpeg-turbo.org>
|
||||||
|
Date: Tue, 1 Jan 2019 20:32:40 -0600
|
||||||
|
Subject: [PATCH] wrbmp.c: Don't allow quantization w/ non-RGB CS
|
||||||
|
|
||||||
|
If cinfo->quantize_colors == 1, then jpeg_calc_output_dimensions() will
|
||||||
|
set cinfo->output_components to 1, and if cinfo->out_color_space is not
|
||||||
|
RGB (or extended RGB), hilarity will ensue.
|
||||||
|
|
||||||
|
Fixes #305
|
||||||
|
|
||||||
|
[baruch: drop the ChangeLog.md hunk]
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit f8cca819a4
|
||||||
|
|
||||||
|
ChangeLog.md | 4 ++++
|
||||||
|
wrbmp.c | 5 +++--
|
||||||
|
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/wrbmp.c b/wrbmp.c
|
||||||
|
index 4bf81426b0ef..239f64eb3c3f 100644
|
||||||
|
--- a/wrbmp.c
|
||||||
|
+++ b/wrbmp.c
|
||||||
|
@@ -502,8 +502,9 @@ jinit_write_bmp(j_decompress_ptr cinfo, boolean is_os2,
|
||||||
|
dest->pub.put_pixel_rows = put_gray_rows;
|
||||||
|
else
|
||||||
|
dest->pub.put_pixel_rows = put_pixel_rows;
|
||||||
|
- } else if (cinfo->out_color_space == JCS_RGB565 ||
|
||||||
|
- cinfo->out_color_space == JCS_CMYK) {
|
||||||
|
+ } else if (!cinfo->quantize_colors &&
|
||||||
|
+ (cinfo->out_color_space == JCS_RGB565 ||
|
||||||
|
+ cinfo->out_color_space == JCS_CMYK)) {
|
||||||
|
dest->pub.put_pixel_rows = put_pixel_rows;
|
||||||
|
} else {
|
||||||
|
ERREXIT(cinfo, JERR_BMP_COLORSPACE);
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From 8312eaa576014cd9b965012af51bc1f967b12423 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Axtens <dja@axtens.net>
|
||||||
|
Date: Tue, 1 Jan 2019 17:10:49 +1100
|
||||||
|
Subject: [PATCH] iso9660: Fail when expected Rockridge extensions is missing
|
||||||
|
|
||||||
|
A corrupted or malicious ISO9660 image can cause read_CE() to loop
|
||||||
|
forever.
|
||||||
|
|
||||||
|
read_CE() calls parse_rockridge(), expecting a Rockridge extension
|
||||||
|
to be read. However, parse_rockridge() is structured as a while
|
||||||
|
loop starting with a sanity check, and if the sanity check fails
|
||||||
|
before the loop has run, the function returns ARCHIVE_OK without
|
||||||
|
advancing the position in the file. This causes read_CE() to retry
|
||||||
|
indefinitely.
|
||||||
|
|
||||||
|
Make parse_rockridge() return ARCHIVE_WARN if it didn't read an
|
||||||
|
extension. As someone with no real knowledge of the format, this
|
||||||
|
seems more apt than ARCHIVE_FATAL, but both the call-sites escalate
|
||||||
|
it to a fatal error immediately anyway.
|
||||||
|
|
||||||
|
Found with a combination of AFL, afl-rb (FairFuzz) and qsym.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 8312eaa57601
|
||||||
|
|
||||||
|
libarchive/archive_read_support_format_iso9660.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c
|
||||||
|
index 28acfefbba8a..bad8f1dfef3a 100644
|
||||||
|
--- a/libarchive/archive_read_support_format_iso9660.c
|
||||||
|
+++ b/libarchive/archive_read_support_format_iso9660.c
|
||||||
|
@@ -2102,6 +2102,7 @@ parse_rockridge(struct archive_read *a, struct file_info *file,
|
||||||
|
const unsigned char *p, const unsigned char *end)
|
||||||
|
{
|
||||||
|
struct iso9660 *iso9660;
|
||||||
|
+ int entry_seen = 0;
|
||||||
|
|
||||||
|
iso9660 = (struct iso9660 *)(a->format->data);
|
||||||
|
|
||||||
|
@@ -2257,8 +2258,16 @@ parse_rockridge(struct archive_read *a, struct file_info *file,
|
||||||
|
}
|
||||||
|
|
||||||
|
p += p[2];
|
||||||
|
+ entry_seen = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (entry_seen)
|
||||||
|
+ return (ARCHIVE_OK);
|
||||||
|
+ else {
|
||||||
|
+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
|
||||||
|
+ "Tried to parse Rockridge extensions, but none found");
|
||||||
|
+ return (ARCHIVE_WARN);
|
||||||
|
}
|
||||||
|
- return (ARCHIVE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From 65a23f5dbee4497064e9bb467f81138a62b0dae1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Axtens <dja@axtens.net>
|
||||||
|
Date: Tue, 1 Jan 2019 16:01:40 +1100
|
||||||
|
Subject: [PATCH] 7zip: fix crash when parsing certain archives
|
||||||
|
|
||||||
|
Fuzzing with CRCs disabled revealed that a call to get_uncompressed_data()
|
||||||
|
would sometimes fail to return at least 'minimum' bytes. This can cause
|
||||||
|
the crc32() invocation in header_bytes to read off into invalid memory.
|
||||||
|
|
||||||
|
A specially crafted archive can use this to cause a crash.
|
||||||
|
|
||||||
|
An ASAN trace is below, but ASAN is not required - an uninstrumented
|
||||||
|
binary will also crash.
|
||||||
|
|
||||||
|
==7719==ERROR: AddressSanitizer: SEGV on unknown address 0x631000040000 (pc 0x7fbdb3b3ec1d bp 0x7ffe77a51310 sp 0x7ffe77a51150 T0)
|
||||||
|
==7719==The signal is caused by a READ memory access.
|
||||||
|
#0 0x7fbdb3b3ec1c in crc32_z (/lib/x86_64-linux-gnu/libz.so.1+0x2c1c)
|
||||||
|
#1 0x84f5eb in header_bytes (/tmp/libarchive/bsdtar+0x84f5eb)
|
||||||
|
#2 0x856156 in read_Header (/tmp/libarchive/bsdtar+0x856156)
|
||||||
|
#3 0x84e134 in slurp_central_directory (/tmp/libarchive/bsdtar+0x84e134)
|
||||||
|
#4 0x849690 in archive_read_format_7zip_read_header (/tmp/libarchive/bsdtar+0x849690)
|
||||||
|
#5 0x5713b7 in _archive_read_next_header2 (/tmp/libarchive/bsdtar+0x5713b7)
|
||||||
|
#6 0x570e63 in _archive_read_next_header (/tmp/libarchive/bsdtar+0x570e63)
|
||||||
|
#7 0x6f08bd in archive_read_next_header (/tmp/libarchive/bsdtar+0x6f08bd)
|
||||||
|
#8 0x52373f in read_archive (/tmp/libarchive/bsdtar+0x52373f)
|
||||||
|
#9 0x5257be in tar_mode_x (/tmp/libarchive/bsdtar+0x5257be)
|
||||||
|
#10 0x51daeb in main (/tmp/libarchive/bsdtar+0x51daeb)
|
||||||
|
#11 0x7fbdb27cab96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
|
||||||
|
#12 0x41dd09 in _start (/tmp/libarchive/bsdtar+0x41dd09)
|
||||||
|
|
||||||
|
This was primarly done with afl and FairFuzz. Some early corpus entries
|
||||||
|
may have been generated by qsym.
|
||||||
|
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status: commit 65a23f5dbee
|
||||||
|
|
||||||
|
libarchive/archive_read_support_format_7zip.c | 8 +-------
|
||||||
|
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libarchive/archive_read_support_format_7zip.c b/libarchive/archive_read_support_format_7zip.c
|
||||||
|
index bccbf896603b..b6d1505d372e 100644
|
||||||
|
--- a/libarchive/archive_read_support_format_7zip.c
|
||||||
|
+++ b/libarchive/archive_read_support_format_7zip.c
|
||||||
|
@@ -2964,13 +2964,7 @@ get_uncompressed_data(struct archive_read *a, const void **buff, size_t size,
|
||||||
|
if (zip->codec == _7Z_COPY && zip->codec2 == (unsigned long)-1) {
|
||||||
|
/* Copy mode. */
|
||||||
|
|
||||||
|
- /*
|
||||||
|
- * Note: '1' here is a performance optimization.
|
||||||
|
- * Recall that the decompression layer returns a count of
|
||||||
|
- * available bytes; asking for more than that forces the
|
||||||
|
- * decompressor to combine reads by copying data.
|
||||||
|
- */
|
||||||
|
- *buff = __archive_read_ahead(a, 1, &bytes_avail);
|
||||||
|
+ *buff = __archive_read_ahead(a, minimum, &bytes_avail);
|
||||||
|
if (bytes_avail <= 0) {
|
||||||
|
archive_set_error(&a->archive,
|
||||||
|
ARCHIVE_ERRNO_FILE_FORMAT,
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From c70d326f3ae88aa2dca903fb17a1f18d3b45a2ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
Date: Fri, 8 Feb 2019 16:45:32 +0100
|
||||||
|
Subject: [PATCH] configure.ac: fix build with openssl
|
||||||
|
|
||||||
|
- Add a call to PKG_CHECK_MODULES to get openssl libraries and its
|
||||||
|
dependencies if openssl support is enabled
|
||||||
|
- Add OPENSSL_LIBS to libupnp.pc.in so that applications linking with
|
||||||
|
pupnp (such as mpd) will be able to retrieve openssl libraries
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- http://autobuild.buildroot.org/results/a4148e516070b79816769f3443fc24d6d8192073
|
||||||
|
|
||||||
|
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
[Upstream status: https://github.com/mrjimenez/pupnp/pull/105]
|
||||||
|
---
|
||||||
|
configure.ac | 5 +++++
|
||||||
|
libupnp.pc.in | 2 +-
|
||||||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 670d363..190b30c 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -722,6 +722,11 @@ AC_COMPILE_IFELSE(
|
||||||
|
AC_MSG_ERROR([pthread_rwlock_t not available])])])
|
||||||
|
echo "-------------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
+if test "x$enable_open_ssl" = xyes ; then
|
||||||
|
+ PKG_CHECK_MODULES(OPENSSL, libssl,
|
||||||
|
+ [LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"],
|
||||||
|
+ [AC_MSG_ERROR([openssl not found])])
|
||||||
|
+fi
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
diff --git a/libupnp.pc.in b/libupnp.pc.in
|
||||||
|
index bd2d7b3..54cba90 100644
|
||||||
|
--- a/libupnp.pc.in
|
||||||
|
+++ b/libupnp.pc.in
|
||||||
|
@@ -6,6 +6,6 @@ includedir=@includedir@
|
||||||
|
Name: libupnp
|
||||||
|
Description: Linux SDK for UPnP Devices
|
||||||
|
Version: @VERSION@
|
||||||
|
-Libs: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -L${libdir} -lupnp -lixml
|
||||||
|
+Libs: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -L${libdir} -lupnp -lixml @OPENSSL_LIBS@
|
||||||
|
Cflags: @PTHREAD_CFLAGS@ -I${includedir}/upnp
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
@ -11,11 +11,12 @@ LIBUPNP18_CONF_ENV = ac_cv_lib_compat_ftime=no
|
|||||||
LIBUPNP18_INSTALL_STAGING = YES
|
LIBUPNP18_INSTALL_STAGING = YES
|
||||||
LIBUPNP18_LICENSE = BSD-3-Clause
|
LIBUPNP18_LICENSE = BSD-3-Clause
|
||||||
LIBUPNP18_LICENSE_FILES = COPYING
|
LIBUPNP18_LICENSE_FILES = COPYING
|
||||||
|
# We're patching configure.ac
|
||||||
|
LIBUPNP18_AUTORECONF = YES
|
||||||
|
|
||||||
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
||||||
LIBUPNP18_CONF_OPTS += --enable-open-ssl
|
LIBUPNP18_CONF_OPTS += --enable-open-ssl
|
||||||
LIBUPNP18_DEPENDENCIES += host-pkgconf openssl
|
LIBUPNP18_DEPENDENCIES += host-pkgconf openssl
|
||||||
LIBUPNP18_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`"
|
|
||||||
else
|
else
|
||||||
LIBUPNP18_CONF_OPTS += --disable-open-ssl
|
LIBUPNP18_CONF_OPTS += --disable-open-ssl
|
||||||
endif
|
endif
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
From ad66d3c202eb72ac5808f13a0489ac836dc55aac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||||
|
Date: Mon, 11 Feb 2019 20:31:42 +0100
|
||||||
|
Subject: [PATCH] Fix build failure when x11 support is disabled
|
||||||
|
|
||||||
|
Patch suggested on upstream bug tracker:
|
||||||
|
https://github.com/intel/libva-utils/issues/150#issuecomment-462059528
|
||||||
|
|
||||||
|
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||||
|
---
|
||||||
|
Makefile.am | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index d28175a..12da79e 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -24,10 +24,10 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = foreign
|
||||||
|
|
||||||
|
-SUBDIRS = common decode encode vainfo videoprocess vendor/intel vendor/intel/sfcsample
|
||||||
|
+SUBDIRS = common decode encode vainfo videoprocess vendor/intel
|
||||||
|
|
||||||
|
if USE_X11
|
||||||
|
-SUBDIRS += putsurface
|
||||||
|
+SUBDIRS += putsurface vendor/intel/sfcsample
|
||||||
|
else
|
||||||
|
if USE_WAYLAND
|
||||||
|
SUBDIRS += putsurface
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -10,6 +10,7 @@ LIBVA_UTILS_SITE = https://github.com/intel/libva-utils/releases/download/$(LIBV
|
|||||||
LIBVA_UTILS_LICENSE = MIT
|
LIBVA_UTILS_LICENSE = MIT
|
||||||
LIBVA_UTILS_LICENSE_FILES = COPYING
|
LIBVA_UTILS_LICENSE_FILES = COPYING
|
||||||
# 0001-check-ssp.patch
|
# 0001-check-ssp.patch
|
||||||
|
# 0002-Fix-build-failure-when-x11-support-is-disabled.patch
|
||||||
LIBVA_UTILS_AUTORECONF = YES
|
LIBVA_UTILS_AUTORECONF = YES
|
||||||
LIBVA_UTILS_DEPENDENCIES = host-pkgconf libva
|
LIBVA_UTILS_DEPENDENCIES = host-pkgconf libva
|
||||||
|
|
||||||
|
@ -12,3 +12,4 @@ LIBYAML_LICENSE = MIT
|
|||||||
LIBYAML_LICENSE_FILES = LICENSE
|
LIBYAML_LICENSE_FILES = LICENSE
|
||||||
|
|
||||||
$(eval $(autotools-package))
|
$(eval $(autotools-package))
|
||||||
|
$(eval $(host-autotools-package))
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
From 362be06fc16a5ad0f9e9aa90cc763c5242e8e35c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
Date: Sat, 9 Feb 2019 12:41:45 +0100
|
||||||
|
Subject: [PATCH] ssl_manager.cpp: fix build with gcc 7 and -fpermissive
|
||||||
|
|
||||||
|
Change prototype of DERToken::parse function from
|
||||||
|
parse(ConstDataRange cdr, size_t* outLength);
|
||||||
|
to parse(ConstDataRange cdr, uint64_t* outLength);
|
||||||
|
|
||||||
|
Otherwise, we got the following error:
|
||||||
|
|
||||||
|
src/mongo/util/net/ssl_manager.cpp: In static member function 'static mongo::StatusWith<mongo::{anonymous}::DERToken> mongo::{anonymous}::DERToken::parse(mongo::ConstDataRange, size_t*)':
|
||||||
|
src/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'long unsigned int*' [-fpermissive]
|
||||||
|
if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) ||
|
||||||
|
|
||||||
|
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
[Upstream status: https://github.com/mongodb/mongo/pull/1296]
|
||||||
|
---
|
||||||
|
src/mongo/util/net/ssl_manager.cpp | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp
|
||||||
|
index b93ebe84a4..3511eb5d99 100644
|
||||||
|
--- a/src/mongo/util/net/ssl_manager.cpp
|
||||||
|
+++ b/src/mongo/util/net/ssl_manager.cpp
|
||||||
|
@@ -782,7 +782,7 @@ public:
|
||||||
|
*
|
||||||
|
* Returns a DERToken which consists of the (tag, length, value) tuple.
|
||||||
|
*/
|
||||||
|
- static StatusWith<DERToken> parse(ConstDataRange cdr, size_t* outLength);
|
||||||
|
+ static StatusWith<DERToken> parse(ConstDataRange cdr, uint64_t* outLength);
|
||||||
|
|
||||||
|
private:
|
||||||
|
DERType _type{DERType::EndOfContent};
|
||||||
|
@@ -799,7 +799,7 @@ struct DataType::Handler<DERToken> {
|
||||||
|
size_t length,
|
||||||
|
size_t* advanced,
|
||||||
|
std::ptrdiff_t debug_offset) {
|
||||||
|
- size_t outLength;
|
||||||
|
+ uint64_t outLength;
|
||||||
|
|
||||||
|
auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength);
|
||||||
|
|
||||||
|
@@ -844,7 +844,7 @@ StatusWith<std::string> readDERString(ConstDataRangeCursor& cdc) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, size_t* outLength) {
|
||||||
|
+StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, uint64_t* outLength) {
|
||||||
|
const size_t kTagLength = 1;
|
||||||
|
const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
40
package/mongodb/Config.in
Normal file
40
package/mongodb/Config.in
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# from https://docs.mongodb.com/manual/installation/#supported-platforms
|
||||||
|
config BR2_PACKAGE_MONGODB_ARCH_SUPPORTS
|
||||||
|
bool
|
||||||
|
# ARM needs LDREX/STREX, so ARMv6+
|
||||||
|
default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5
|
||||||
|
default y if BR2_aarch64 || BR2_powerpc64 || BR2_x86_64
|
||||||
|
|
||||||
|
config BR2_PACKAGE_MONGODB
|
||||||
|
bool "mongodb"
|
||||||
|
depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS
|
||||||
|
depends on BR2_TOOLCHAIN_USES_GLIBC # needs glibc malloc_usable_size
|
||||||
|
depends on BR2_USE_WCHAR
|
||||||
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
|
depends on BR2_INSTALL_LIBSTDCPP
|
||||||
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_6
|
||||||
|
select BR2_PACKAGE_BOOST
|
||||||
|
select BR2_PACKAGE_BOOST_FILESYSTEM
|
||||||
|
select BR2_PACKAGE_BOOST_IOSTREAMS
|
||||||
|
select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
|
||||||
|
select BR2_PACKAGE_BOOST_SYSTEM
|
||||||
|
select BR2_PACKAGE_PCRE
|
||||||
|
select BR2_PACKAGE_SNAPPY
|
||||||
|
select BR2_PACKAGE_SQLITE
|
||||||
|
select BR2_PACKAGE_YAML_CPP
|
||||||
|
select BR2_PACKAGE_ZLIB
|
||||||
|
help
|
||||||
|
MongoDB is a cross-platform document-oriented database
|
||||||
|
(NoSQL).
|
||||||
|
|
||||||
|
It uses JSON-like documents with dynamic schemas (BSON),
|
||||||
|
making the integration of data in certain types of
|
||||||
|
applications easier and faster.
|
||||||
|
|
||||||
|
https://www.mongodb.org/
|
||||||
|
|
||||||
|
comment "mongodb needs a glibc toolchain w/ wchar, threads, C++, gcc >= 6"
|
||||||
|
depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
|
||||||
|
!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC || \
|
||||||
|
!BR2_TOOLCHAIN_GCC_AT_LEAST_6
|
||||||
|
depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS
|
4
package/mongodb/mongodb.hash
Normal file
4
package/mongodb/mongodb.hash
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Locally computed:
|
||||||
|
sha256 5db85f06b2a0b2ae393339a4aed1366928aaef2b46c7c32826fa87c3217dc6f7 mongodb-r4.0.6.tar.gz
|
||||||
|
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 APACHE-2.0.txt
|
||||||
|
sha256 09d99ca61eb07873d5334077acba22c33e7f7d0a9fa08c92734e0ac8430d6e27 LICENSE-Community.txt
|
92
package/mongodb/mongodb.mk
Normal file
92
package/mongodb/mongodb.mk
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# mongodb
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
MONGODB_VERSION_BASE = 4.0.6
|
||||||
|
MONGODB_VERSION = r$(MONGODB_VERSION_BASE)
|
||||||
|
MONGODB_SITE = $(call github,mongodb,mongo,$(MONGODB_VERSION))
|
||||||
|
|
||||||
|
MONGODB_LICENSE = Apache-2.0 (drivers), SSPL (database)
|
||||||
|
MONGODB_LICENSE_FILES = APACHE-2.0.txt LICENSE-Community.txt
|
||||||
|
|
||||||
|
MONGODB_DEPENDENCIES = \
|
||||||
|
boost \
|
||||||
|
host-python-cheetah \
|
||||||
|
host-python-pyyaml \
|
||||||
|
host-python-typing \
|
||||||
|
host-scons \
|
||||||
|
pcre \
|
||||||
|
snappy \
|
||||||
|
sqlite \
|
||||||
|
yaml-cpp \
|
||||||
|
zlib
|
||||||
|
|
||||||
|
MONGODB_SCONS_TARGETS = mongod mongos
|
||||||
|
|
||||||
|
MONGODB_SCONS_ENV = CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" \
|
||||||
|
-j"$(PARALLEL_JOBS)"
|
||||||
|
|
||||||
|
MONGODB_SCONS_OPTS = \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
--use-system-boost \
|
||||||
|
--use-system-pcre \
|
||||||
|
--use-system-snappy \
|
||||||
|
--use-system-sqlite \
|
||||||
|
--use-system-yaml \
|
||||||
|
--use-system-zlib
|
||||||
|
|
||||||
|
# need to pass mongo version when not building from git repo
|
||||||
|
MONGODB_SCONS_OPTS += MONGO_VERSION=$(MONGODB_VERSION_BASE)-
|
||||||
|
|
||||||
|
# WiredTiger database storage engine only supported on 64 bits
|
||||||
|
ifeq ($(BR2_ARCH_IS_64),y)
|
||||||
|
MONGODB_SCONS_OPTS += --wiredtiger=on
|
||||||
|
else
|
||||||
|
MONGODB_SCONS_OPTS += --wiredtiger=off
|
||||||
|
endif
|
||||||
|
|
||||||
|
# JavaScript scripting engine and tcmalloc supported only on
|
||||||
|
# x86/x86-64 systems. Mongo target is a shell interface that
|
||||||
|
# depends on the javascript engine, so it will also only be
|
||||||
|
# built on x86/x86-64 systems.
|
||||||
|
ifeq ($(BR2_i386)$(BR2_x86_64),y)
|
||||||
|
MONGODB_SCONS_OPTS += --js-engine=mozjs --allocator=tcmalloc
|
||||||
|
MONGODB_SCONS_TARGETS += mongo
|
||||||
|
else
|
||||||
|
MONGODB_SCONS_OPTS += --js-engine=none --allocator=system
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BR2_PACKAGE_LIBCURL),y)
|
||||||
|
MONGODB_DEPENDENCIES += libcurl
|
||||||
|
MONGODB_SCONS_OPTS += --enable-free-mon=on
|
||||||
|
else
|
||||||
|
MONGODB_SCONS_OPTS += --enable-free-mon=off
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
||||||
|
MONGODB_DEPENDENCIES += openssl
|
||||||
|
MONGODB_SCONS_OPTS += \
|
||||||
|
--ssl \
|
||||||
|
--ssl-provider=openssl
|
||||||
|
endif
|
||||||
|
|
||||||
|
define MONGODB_BUILD_CMDS
|
||||||
|
(cd $(@D); \
|
||||||
|
$(SCONS) \
|
||||||
|
$(MONGODB_SCONS_ENV) \
|
||||||
|
$(MONGODB_SCONS_OPTS) \
|
||||||
|
$(MONGODB_SCONS_TARGETS))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define MONGODB_INSTALL_TARGET_CMDS
|
||||||
|
(cd $(@D); \
|
||||||
|
$(SCONS) \
|
||||||
|
$(MONGODB_SCONS_ENV) \
|
||||||
|
$(MONGODB_SCONS_OPTS) \
|
||||||
|
--prefix=$(TARGET_DIR)/usr \
|
||||||
|
install)
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
@ -0,0 +1,275 @@
|
|||||||
|
From 5979bdfeca813dd7e997a1edb0f928d77ce70304 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "dtucker@openbsd.org" <dtucker@openbsd.org>
|
||||||
|
Date: Wed, 23 Jan 2019 08:01:46 +0000
|
||||||
|
Subject: [PATCH] upstream: Sanitize scp filenames via snmprintf. To do this we
|
||||||
|
move
|
||||||
|
|
||||||
|
the progressmeter formatting outside of signal handler context and have the
|
||||||
|
atomicio callback called for EINTR too. bz#2434 with contributions from djm
|
||||||
|
and jjelen at redhat.com, ok djm@
|
||||||
|
|
||||||
|
OpenBSD-Commit-ID: 1af61c1f70e4f3bd8ab140b9f1fa699481db57d8
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status (openssh-portable): backported from commit 8976f1c4b27
|
||||||
|
---
|
||||||
|
atomicio.c | 20 ++++++++++++++-----
|
||||||
|
progressmeter.c | 53 ++++++++++++++++++++++---------------------------
|
||||||
|
progressmeter.h | 3 ++-
|
||||||
|
scp.c | 1 +
|
||||||
|
sftp-client.c | 16 ++++++++-------
|
||||||
|
5 files changed, 51 insertions(+), 42 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/atomicio.c b/atomicio.c
|
||||||
|
index f854a06f5f50..d91bd7621c12 100644
|
||||||
|
--- a/atomicio.c
|
||||||
|
+++ b/atomicio.c
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* $OpenBSD: atomicio.c,v 1.28 2016/07/27 23:18:12 djm Exp $ */
|
||||||
|
+/* $OpenBSD: atomicio.c,v 1.29 2019/01/23 08:01:46 dtucker Exp $ */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Damien Miller. All rights reserved.
|
||||||
|
* Copyright (c) 2005 Anil Madhavapeddy. All rights reserved.
|
||||||
|
@@ -65,9 +65,14 @@ atomicio6(ssize_t (*f) (int, void *, size_t), int fd, void *_s, size_t n,
|
||||||
|
res = (f) (fd, s + pos, n - pos);
|
||||||
|
switch (res) {
|
||||||
|
case -1:
|
||||||
|
- if (errno == EINTR)
|
||||||
|
+ if (errno == EINTR) {
|
||||||
|
+ /* possible SIGALARM, update callback */
|
||||||
|
+ if (cb != NULL && cb(cb_arg, 0) == -1) {
|
||||||
|
+ errno = EINTR;
|
||||||
|
+ return pos;
|
||||||
|
+ }
|
||||||
|
continue;
|
||||||
|
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||||
|
+ } else if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||||
|
#ifndef BROKEN_READ_COMPARISON
|
||||||
|
(void)poll(&pfd, 1, -1);
|
||||||
|
#endif
|
||||||
|
@@ -122,9 +127,14 @@ atomiciov6(ssize_t (*f) (int, const struct iovec *, int), int fd,
|
||||||
|
res = (f) (fd, iov, iovcnt);
|
||||||
|
switch (res) {
|
||||||
|
case -1:
|
||||||
|
- if (errno == EINTR)
|
||||||
|
+ if (errno == EINTR) {
|
||||||
|
+ /* possible SIGALARM, update callback */
|
||||||
|
+ if (cb != NULL && cb(cb_arg, 0) == -1) {
|
||||||
|
+ errno = EINTR;
|
||||||
|
+ return pos;
|
||||||
|
+ }
|
||||||
|
continue;
|
||||||
|
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||||
|
+ } else if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||||
|
#ifndef BROKEN_READV_COMPARISON
|
||||||
|
(void)poll(&pfd, 1, -1);
|
||||||
|
#endif
|
||||||
|
diff --git a/progressmeter.c b/progressmeter.c
|
||||||
|
index fe9bf52e4c90..add462dde500 100644
|
||||||
|
--- a/progressmeter.c
|
||||||
|
+++ b/progressmeter.c
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* $OpenBSD: progressmeter.c,v 1.45 2016/06/30 05:17:05 dtucker Exp $ */
|
||||||
|
+/* $OpenBSD: progressmeter.c,v 1.46 2019/01/23 08:01:46 dtucker Exp $ */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2003 Nils Nordman. All rights reserved.
|
||||||
|
*
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <signal.h>
|
||||||
|
+#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
@@ -39,6 +40,7 @@
|
||||||
|
#include "progressmeter.h"
|
||||||
|
#include "atomicio.h"
|
||||||
|
#include "misc.h"
|
||||||
|
+#include "utf8.h"
|
||||||
|
|
||||||
|
#define DEFAULT_WINSIZE 80
|
||||||
|
#define MAX_WINSIZE 512
|
||||||
|
@@ -61,7 +63,7 @@ static void setscreensize(void);
|
||||||
|
void refresh_progress_meter(void);
|
||||||
|
|
||||||
|
/* signal handler for updating the progress meter */
|
||||||
|
-static void update_progress_meter(int);
|
||||||
|
+static void sig_alarm(int);
|
||||||
|
|
||||||
|
static double start; /* start progress */
|
||||||
|
static double last_update; /* last progress update */
|
||||||
|
@@ -74,6 +76,7 @@ static long stalled; /* how long we have been stalled */
|
||||||
|
static int bytes_per_second; /* current speed in bytes per second */
|
||||||
|
static int win_size; /* terminal window size */
|
||||||
|
static volatile sig_atomic_t win_resized; /* for window resizing */
|
||||||
|
+static volatile sig_atomic_t alarm_fired;
|
||||||
|
|
||||||
|
/* units for format_size */
|
||||||
|
static const char unit[] = " KMGT";
|
||||||
|
@@ -126,9 +129,17 @@ refresh_progress_meter(void)
|
||||||
|
off_t bytes_left;
|
||||||
|
int cur_speed;
|
||||||
|
int hours, minutes, seconds;
|
||||||
|
- int i, len;
|
||||||
|
int file_len;
|
||||||
|
|
||||||
|
+ if ((!alarm_fired && !win_resized) || !can_output())
|
||||||
|
+ return;
|
||||||
|
+ alarm_fired = 0;
|
||||||
|
+
|
||||||
|
+ if (win_resized) {
|
||||||
|
+ setscreensize();
|
||||||
|
+ win_resized = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
transferred = *counter - (cur_pos ? cur_pos : start_pos);
|
||||||
|
cur_pos = *counter;
|
||||||
|
now = monotime_double();
|
||||||
|
@@ -158,16 +169,11 @@ refresh_progress_meter(void)
|
||||||
|
|
||||||
|
/* filename */
|
||||||
|
buf[0] = '\0';
|
||||||
|
- file_len = win_size - 35;
|
||||||
|
+ file_len = win_size - 36;
|
||||||
|
if (file_len > 0) {
|
||||||
|
- len = snprintf(buf, file_len + 1, "\r%s", file);
|
||||||
|
- if (len < 0)
|
||||||
|
- len = 0;
|
||||||
|
- if (len >= file_len + 1)
|
||||||
|
- len = file_len;
|
||||||
|
- for (i = len; i < file_len; i++)
|
||||||
|
- buf[i] = ' ';
|
||||||
|
- buf[file_len] = '\0';
|
||||||
|
+ buf[0] = '\r';
|
||||||
|
+ snmprintf(buf+1, sizeof(buf)-1 , &file_len, "%*s",
|
||||||
|
+ file_len * -1, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* percent of transfer done */
|
||||||
|
@@ -228,22 +234,11 @@ refresh_progress_meter(void)
|
||||||
|
|
||||||
|
/*ARGSUSED*/
|
||||||
|
static void
|
||||||
|
-update_progress_meter(int ignore)
|
||||||
|
+sig_alarm(int ignore)
|
||||||
|
{
|
||||||
|
- int save_errno;
|
||||||
|
-
|
||||||
|
- save_errno = errno;
|
||||||
|
-
|
||||||
|
- if (win_resized) {
|
||||||
|
- setscreensize();
|
||||||
|
- win_resized = 0;
|
||||||
|
- }
|
||||||
|
- if (can_output())
|
||||||
|
- refresh_progress_meter();
|
||||||
|
-
|
||||||
|
- signal(SIGALRM, update_progress_meter);
|
||||||
|
+ signal(SIGALRM, sig_alarm);
|
||||||
|
+ alarm_fired = 1;
|
||||||
|
alarm(UPDATE_INTERVAL);
|
||||||
|
- errno = save_errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -259,10 +254,9 @@ start_progress_meter(const char *f, off_t filesize, off_t *ctr)
|
||||||
|
bytes_per_second = 0;
|
||||||
|
|
||||||
|
setscreensize();
|
||||||
|
- if (can_output())
|
||||||
|
- refresh_progress_meter();
|
||||||
|
+ refresh_progress_meter();
|
||||||
|
|
||||||
|
- signal(SIGALRM, update_progress_meter);
|
||||||
|
+ signal(SIGALRM, sig_alarm);
|
||||||
|
signal(SIGWINCH, sig_winch);
|
||||||
|
alarm(UPDATE_INTERVAL);
|
||||||
|
}
|
||||||
|
@@ -286,6 +280,7 @@ stop_progress_meter(void)
|
||||||
|
static void
|
||||||
|
sig_winch(int sig)
|
||||||
|
{
|
||||||
|
+ signal(SIGWINCH, sig_winch);
|
||||||
|
win_resized = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/progressmeter.h b/progressmeter.h
|
||||||
|
index bf179dca6518..8f6678060195 100644
|
||||||
|
--- a/progressmeter.h
|
||||||
|
+++ b/progressmeter.h
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-/* $OpenBSD: progressmeter.h,v 1.3 2015/01/14 13:54:13 djm Exp $ */
|
||||||
|
+/* $OpenBSD: progressmeter.h,v 1.4 2019/01/23 08:01:46 dtucker Exp $ */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002 Nils Nordman. All rights reserved.
|
||||||
|
*
|
||||||
|
@@ -24,4 +24,5 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
void start_progress_meter(const char *, off_t, off_t *);
|
||||||
|
+void refresh_progress_meter(void);
|
||||||
|
void stop_progress_meter(void);
|
||||||
|
diff --git a/scp.c b/scp.c
|
||||||
|
index 4f3fdcd3db89..4a342a63873c 100644
|
||||||
|
--- a/scp.c
|
||||||
|
+++ b/scp.c
|
||||||
|
@@ -585,6 +585,7 @@ scpio(void *_cnt, size_t s)
|
||||||
|
off_t *cnt = (off_t *)_cnt;
|
||||||
|
|
||||||
|
*cnt += s;
|
||||||
|
+ refresh_progress_meter();
|
||||||
|
if (limit_kbps > 0)
|
||||||
|
bandwidth_limit(&bwlimit, s);
|
||||||
|
return 0;
|
||||||
|
diff --git a/sftp-client.c b/sftp-client.c
|
||||||
|
index 4986d6d8d291..2bc698f868bc 100644
|
||||||
|
--- a/sftp-client.c
|
||||||
|
+++ b/sftp-client.c
|
||||||
|
@@ -101,7 +101,9 @@ sftpio(void *_bwlimit, size_t amount)
|
||||||
|
{
|
||||||
|
struct bwlimit *bwlimit = (struct bwlimit *)_bwlimit;
|
||||||
|
|
||||||
|
- bandwidth_limit(bwlimit, amount);
|
||||||
|
+ refresh_progress_meter();
|
||||||
|
+ if (bwlimit != NULL)
|
||||||
|
+ bandwidth_limit(bwlimit, amount);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -121,8 +123,8 @@ send_msg(struct sftp_conn *conn, struct sshbuf *m)
|
||||||
|
iov[1].iov_base = (u_char *)sshbuf_ptr(m);
|
||||||
|
iov[1].iov_len = sshbuf_len(m);
|
||||||
|
|
||||||
|
- if (atomiciov6(writev, conn->fd_out, iov, 2,
|
||||||
|
- conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_out) !=
|
||||||
|
+ if (atomiciov6(writev, conn->fd_out, iov, 2, sftpio,
|
||||||
|
+ conn->limit_kbps > 0 ? &conn->bwlimit_out : NULL) !=
|
||||||
|
sshbuf_len(m) + sizeof(mlen))
|
||||||
|
fatal("Couldn't send packet: %s", strerror(errno));
|
||||||
|
|
||||||
|
@@ -138,8 +140,8 @@ get_msg_extended(struct sftp_conn *conn, struct sshbuf *m, int initial)
|
||||||
|
|
||||||
|
if ((r = sshbuf_reserve(m, 4, &p)) != 0)
|
||||||
|
fatal("%s: buffer error: %s", __func__, ssh_err(r));
|
||||||
|
- if (atomicio6(read, conn->fd_in, p, 4,
|
||||||
|
- conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_in) != 4) {
|
||||||
|
+ if (atomicio6(read, conn->fd_in, p, 4, sftpio,
|
||||||
|
+ conn->limit_kbps > 0 ? &conn->bwlimit_in : NULL) != 4) {
|
||||||
|
if (errno == EPIPE || errno == ECONNRESET)
|
||||||
|
fatal("Connection closed");
|
||||||
|
else
|
||||||
|
@@ -157,8 +159,8 @@ get_msg_extended(struct sftp_conn *conn, struct sshbuf *m, int initial)
|
||||||
|
|
||||||
|
if ((r = sshbuf_reserve(m, msg_len, &p)) != 0)
|
||||||
|
fatal("%s: buffer error: %s", __func__, ssh_err(r));
|
||||||
|
- if (atomicio6(read, conn->fd_in, p, msg_len,
|
||||||
|
- conn->limit_kbps > 0 ? sftpio : NULL, &conn->bwlimit_in)
|
||||||
|
+ if (atomicio6(read, conn->fd_in, p, msg_len, sftpio,
|
||||||
|
+ conn->limit_kbps > 0 ? &conn->bwlimit_in : NULL)
|
||||||
|
!= msg_len) {
|
||||||
|
if (errno == EPIPE)
|
||||||
|
fatal("Connection closed");
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,186 @@
|
|||||||
|
From f853123eda6b279a87be48e18bbea8dec82a94f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "djm@openbsd.org" <djm@openbsd.org>
|
||||||
|
Date: Sat, 26 Jan 2019 22:41:28 +0000
|
||||||
|
Subject: [PATCH] upstream: check in scp client that filenames sent during
|
||||||
|
|
||||||
|
remote->local directory copies satisfy the wildcard specified by the user.
|
||||||
|
|
||||||
|
This checking provides some protection against a malicious server
|
||||||
|
sending unexpected filenames, but it comes at a risk of rejecting wanted
|
||||||
|
files due to differences between client and server wildcard expansion rules.
|
||||||
|
|
||||||
|
For this reason, this also adds a new -T flag to disable the check.
|
||||||
|
|
||||||
|
reported by Harry Sintonen
|
||||||
|
fix approach suggested by markus@;
|
||||||
|
has been in snaps for ~1wk courtesy deraadt@
|
||||||
|
|
||||||
|
OpenBSD-Commit-ID: 00f44b50d2be8e321973f3c6d014260f8f7a8eda
|
||||||
|
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
---
|
||||||
|
Upstream status (openssh-portable): backported from commit 8976f1c4b2
|
||||||
|
---
|
||||||
|
scp.1 | 12 +++++++++++-
|
||||||
|
scp.c | 37 +++++++++++++++++++++++++++++--------
|
||||||
|
2 files changed, 40 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scp.1 b/scp.1
|
||||||
|
index 0e5cc1b2d675..397e7709195a 100644
|
||||||
|
--- a/scp.1
|
||||||
|
+++ b/scp.1
|
||||||
|
@@ -18,7 +18,7 @@
|
||||||
|
.Nd secure copy (remote file copy program)
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm scp
|
||||||
|
-.Op Fl 346BCpqrv
|
||||||
|
+.Op Fl 346BCpqrTv
|
||||||
|
.Op Fl c Ar cipher
|
||||||
|
.Op Fl F Ar ssh_config
|
||||||
|
.Op Fl i Ar identity_file
|
||||||
|
@@ -208,6 +208,16 @@ to use for the encrypted connection.
|
||||||
|
The program must understand
|
||||||
|
.Xr ssh 1
|
||||||
|
options.
|
||||||
|
+.It Fl T
|
||||||
|
+Disable strict filename checking.
|
||||||
|
+By default when copying files from a remote host to a local directory
|
||||||
|
+.Nm
|
||||||
|
+checks that the received filenames match those requested on the command-line
|
||||||
|
+to prevent the remote end from sending unexpected or unwanted files.
|
||||||
|
+Because of differences in how various operating systems and shells interpret
|
||||||
|
+filename wildcards, these checks may cause wanted files to be rejected.
|
||||||
|
+This option disables these checks at the expense of fully trusting that
|
||||||
|
+the server will not send unexpected filenames.
|
||||||
|
.It Fl v
|
||||||
|
Verbose mode.
|
||||||
|
Causes
|
||||||
|
diff --git a/scp.c b/scp.c
|
||||||
|
index 4a342a63873c..7b0a08efb274 100644
|
||||||
|
--- a/scp.c
|
||||||
|
+++ b/scp.c
|
||||||
|
@@ -94,6 +94,7 @@
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
+#include <fnmatch.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
@@ -375,14 +376,14 @@ void verifydir(char *);
|
||||||
|
struct passwd *pwd;
|
||||||
|
uid_t userid;
|
||||||
|
int errs, remin, remout;
|
||||||
|
-int pflag, iamremote, iamrecursive, targetshouldbedirectory;
|
||||||
|
+int Tflag, pflag, iamremote, iamrecursive, targetshouldbedirectory;
|
||||||
|
|
||||||
|
#define CMDNEEDS 64
|
||||||
|
char cmd[CMDNEEDS]; /* must hold "rcp -r -p -d\0" */
|
||||||
|
|
||||||
|
int response(void);
|
||||||
|
void rsource(char *, struct stat *);
|
||||||
|
-void sink(int, char *[]);
|
||||||
|
+void sink(int, char *[], const char *);
|
||||||
|
void source(int, char *[]);
|
||||||
|
void tolocal(int, char *[]);
|
||||||
|
void toremote(int, char *[]);
|
||||||
|
@@ -421,8 +422,9 @@ main(int argc, char **argv)
|
||||||
|
addargs(&args, "-oRemoteCommand=none");
|
||||||
|
addargs(&args, "-oRequestTTY=no");
|
||||||
|
|
||||||
|
- fflag = tflag = 0;
|
||||||
|
- while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q12346S:o:F:")) != -1)
|
||||||
|
+ fflag = Tflag = tflag = 0;
|
||||||
|
+ while ((ch = getopt(argc, argv,
|
||||||
|
+ "dfl:prtTvBCc:i:P:q12346S:o:F:")) != -1) {
|
||||||
|
switch (ch) {
|
||||||
|
/* User-visible flags. */
|
||||||
|
case '1':
|
||||||
|
@@ -501,9 +503,13 @@ main(int argc, char **argv)
|
||||||
|
setmode(0, O_BINARY);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
+ case 'T':
|
||||||
|
+ Tflag = 1;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
|
@@ -534,7 +540,7 @@ main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
if (tflag) {
|
||||||
|
/* Receive data. */
|
||||||
|
- sink(argc, argv);
|
||||||
|
+ sink(argc, argv, NULL);
|
||||||
|
exit(errs != 0);
|
||||||
|
}
|
||||||
|
if (argc < 2)
|
||||||
|
@@ -792,7 +798,7 @@ tolocal(int argc, char **argv)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
free(bp);
|
||||||
|
- sink(1, argv + argc - 1);
|
||||||
|
+ sink(1, argv + argc - 1, src);
|
||||||
|
(void) close(remin);
|
||||||
|
remin = remout = -1;
|
||||||
|
}
|
||||||
|
@@ -968,7 +974,7 @@ rsource(char *name, struct stat *statp)
|
||||||
|
(sizeof(type) != 4 && sizeof(type) != 8))
|
||||||
|
|
||||||
|
void
|
||||||
|
-sink(int argc, char **argv)
|
||||||
|
+sink(int argc, char **argv, const char *src)
|
||||||
|
{
|
||||||
|
static BUF buffer;
|
||||||
|
struct stat stb;
|
||||||
|
@@ -984,6 +990,7 @@ sink(int argc, char **argv)
|
||||||
|
unsigned long long ull;
|
||||||
|
int setimes, targisdir, wrerrno = 0;
|
||||||
|
char ch, *cp, *np, *targ, *why, *vect[1], buf[2048], visbuf[2048];
|
||||||
|
+ char *src_copy = NULL, *restrict_pattern = NULL;
|
||||||
|
struct timeval tv[2];
|
||||||
|
|
||||||
|
#define atime tv[0]
|
||||||
|
@@ -1008,6 +1015,17 @@ sink(int argc, char **argv)
|
||||||
|
(void) atomicio(vwrite, remout, "", 1);
|
||||||
|
if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode))
|
||||||
|
targisdir = 1;
|
||||||
|
+ if (src != NULL && !iamrecursive && !Tflag) {
|
||||||
|
+ /*
|
||||||
|
+ * Prepare to try to restrict incoming filenames to match
|
||||||
|
+ * the requested destination file glob.
|
||||||
|
+ */
|
||||||
|
+ if ((src_copy = strdup(src)) == NULL)
|
||||||
|
+ fatal("strdup failed");
|
||||||
|
+ if ((restrict_pattern = strrchr(src_copy, '/')) != NULL) {
|
||||||
|
+ *restrict_pattern++ = '\0';
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
for (first = 1;; first = 0) {
|
||||||
|
cp = buf;
|
||||||
|
if (atomicio(read, remin, cp, 1) != 1)
|
||||||
|
@@ -1112,6 +1130,9 @@ sink(int argc, char **argv)
|
||||||
|
run_err("error: unexpected filename: %s", cp);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
+ if (restrict_pattern != NULL &&
|
||||||
|
+ fnmatch(restrict_pattern, cp, 0) != 0)
|
||||||
|
+ SCREWUP("filename does not match request");
|
||||||
|
if (targisdir) {
|
||||||
|
static char *namebuf;
|
||||||
|
static size_t cursize;
|
||||||
|
@@ -1149,7 +1170,7 @@ sink(int argc, char **argv)
|
||||||
|
goto bad;
|
||||||
|
}
|
||||||
|
vect[0] = xstrdup(np);
|
||||||
|
- sink(1, vect);
|
||||||
|
+ sink(1, vect, src);
|
||||||
|
if (setimes) {
|
||||||
|
setimes = 0;
|
||||||
|
if (utimes(vect[0], tv) < 0)
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -2,6 +2,7 @@ config BR2_PACKAGE_OPENTRACING_CPP
|
|||||||
bool "opentracing-cpp"
|
bool "opentracing-cpp"
|
||||||
depends on BR2_INSTALL_LIBSTDCPP
|
depends on BR2_INSTALL_LIBSTDCPP
|
||||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
|
depends on !BR2_STATIC_LIBS
|
||||||
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
|
||||||
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr
|
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr
|
||||||
help
|
help
|
||||||
@ -9,8 +10,9 @@ config BR2_PACKAGE_OPENTRACING_CPP
|
|||||||
|
|
||||||
http://opentracing.io
|
http://opentracing.io
|
||||||
|
|
||||||
comment "opentracing-cpp needs a toolchain w/ C++, threads, gcc >= 4.8"
|
comment "opentracing-cpp needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8"
|
||||||
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
|
||||||
|
|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
||||||
|
|
||||||
comment "opentracing-cpp needs exception_ptr"
|
comment "opentracing-cpp needs exception_ptr"
|
||||||
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
|
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
|
||||||
|
@ -11,5 +11,7 @@ PYTHON_PYYAML_SETUP_TYPE = distutils
|
|||||||
PYTHON_PYYAML_LICENSE = MIT
|
PYTHON_PYYAML_LICENSE = MIT
|
||||||
PYTHON_PYYAML_LICENSE_FILES = LICENSE
|
PYTHON_PYYAML_LICENSE_FILES = LICENSE
|
||||||
PYTHON_PYYAML_DEPENDENCIES = libyaml
|
PYTHON_PYYAML_DEPENDENCIES = libyaml
|
||||||
|
HOST_PYTHON_PYYAML_DEPENDENCIES = host-libyaml
|
||||||
|
|
||||||
$(eval $(python-package))
|
$(eval $(python-package))
|
||||||
|
$(eval $(host-python-package))
|
||||||
|
@ -12,3 +12,4 @@ PYTHON_TYPING_LICENSE = Python-2.0, others
|
|||||||
PYTHON_TYPING_LICENSE_FILES = LICENSE
|
PYTHON_TYPING_LICENSE_FILES = LICENSE
|
||||||
|
|
||||||
$(eval $(python-package))
|
$(eval $(python-package))
|
||||||
|
$(eval $(host-python-package))
|
||||||
|
@ -0,0 +1,338 @@
|
|||||||
|
From 0a8e4117e7f715d5fbeef398405813ce8e88558b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
|
Date: Wed, 9 Jan 2019 13:40:01 +1100
|
||||||
|
Subject: [PATCH] nsenter: clone /proc/self/exe to avoid exposing host binary
|
||||||
|
to container
|
||||||
|
|
||||||
|
There are quite a few circumstances where /proc/self/exe pointing to a
|
||||||
|
pretty important container binary is a _bad_ thing, so to avoid this we
|
||||||
|
have to make a copy (preferably doing self-clean-up and not being
|
||||||
|
writeable).
|
||||||
|
|
||||||
|
We require memfd_create(2) -- though there is an O_TMPFILE fallback --
|
||||||
|
but we can always extend this to use a scratch MNT_DETACH overlayfs or
|
||||||
|
tmpfs. The main downside to this approach is no page-cache sharing for
|
||||||
|
the runc binary (which overlayfs would give us) but this is far less
|
||||||
|
complicated.
|
||||||
|
|
||||||
|
This is only done during nsenter so that it happens transparently to the
|
||||||
|
Go code, and any libcontainer users benefit from it. This also makes
|
||||||
|
ExtraFiles and --preserve-fds handling trivial (because we don't need to
|
||||||
|
worry about it).
|
||||||
|
|
||||||
|
Fixes: CVE-2019-5736
|
||||||
|
Co-developed-by: Christian Brauner <christian.brauner@ubuntu.com>
|
||||||
|
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
||||||
|
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||||
|
---
|
||||||
|
libcontainer/nsenter/cloned_binary.c | 268 +++++++++++++++++++++++++++++++++++
|
||||||
|
libcontainer/nsenter/nsexec.c | 11 ++
|
||||||
|
2 files changed, 279 insertions(+)
|
||||||
|
create mode 100644 libcontainer/nsenter/cloned_binary.c
|
||||||
|
|
||||||
|
diff --git a/libcontainer/nsenter/cloned_binary.c b/libcontainer/nsenter/cloned_binary.c
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..c8a42c23
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libcontainer/nsenter/cloned_binary.c
|
||||||
|
@@ -0,0 +1,268 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2019 Aleksa Sarai <cyphar@cyphar.com>
|
||||||
|
+ * Copyright (C) 2019 SUSE LLC
|
||||||
|
+ *
|
||||||
|
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
+ *
|
||||||
|
+ * Unless required by applicable law or agreed to in writing, software
|
||||||
|
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
+ * See the License for the specific language governing permissions and
|
||||||
|
+ * limitations under the License.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#define _GNU_SOURCE
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#include <stdbool.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <limits.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <sys/vfs.h>
|
||||||
|
+#include <sys/mman.h>
|
||||||
|
+#include <sys/sendfile.h>
|
||||||
|
+#include <sys/syscall.h>
|
||||||
|
+
|
||||||
|
+/* Use our own wrapper for memfd_create. */
|
||||||
|
+#if !defined(SYS_memfd_create) && defined(__NR_memfd_create)
|
||||||
|
+# define SYS_memfd_create __NR_memfd_create
|
||||||
|
+#endif
|
||||||
|
+#ifdef SYS_memfd_create
|
||||||
|
+# define HAVE_MEMFD_CREATE
|
||||||
|
+/* memfd_create(2) flags -- copied from <linux/memfd.h>. */
|
||||||
|
+# ifndef MFD_CLOEXEC
|
||||||
|
+# define MFD_CLOEXEC 0x0001U
|
||||||
|
+# define MFD_ALLOW_SEALING 0x0002U
|
||||||
|
+# endif
|
||||||
|
+int memfd_create(const char *name, unsigned int flags)
|
||||||
|
+{
|
||||||
|
+ return syscall(SYS_memfd_create, name, flags);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* This comes directly from <linux/fcntl.h>. */
|
||||||
|
+#ifndef F_LINUX_SPECIFIC_BASE
|
||||||
|
+# define F_LINUX_SPECIFIC_BASE 1024
|
||||||
|
+#endif
|
||||||
|
+#ifndef F_ADD_SEALS
|
||||||
|
+# define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9)
|
||||||
|
+# define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10)
|
||||||
|
+#endif
|
||||||
|
+#ifndef F_SEAL_SEAL
|
||||||
|
+# define F_SEAL_SEAL 0x0001 /* prevent further seals from being set */
|
||||||
|
+# define F_SEAL_SHRINK 0x0002 /* prevent file from shrinking */
|
||||||
|
+# define F_SEAL_GROW 0x0004 /* prevent file from growing */
|
||||||
|
+# define F_SEAL_WRITE 0x0008 /* prevent writes */
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define RUNC_SENDFILE_MAX 0x7FFFF000 /* sendfile(2) is limited to 2GB. */
|
||||||
|
+#ifdef HAVE_MEMFD_CREATE
|
||||||
|
+# define RUNC_MEMFD_COMMENT "runc_cloned:/proc/self/exe"
|
||||||
|
+# define RUNC_MEMFD_SEALS \
|
||||||
|
+ (F_SEAL_SEAL | F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+static void *must_realloc(void *ptr, size_t size)
|
||||||
|
+{
|
||||||
|
+ void *old = ptr;
|
||||||
|
+ do {
|
||||||
|
+ ptr = realloc(old, size);
|
||||||
|
+ } while(!ptr);
|
||||||
|
+ return ptr;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Verify whether we are currently in a self-cloned program (namely, is
|
||||||
|
+ * /proc/self/exe a memfd). F_GET_SEALS will only succeed for memfds (or rather
|
||||||
|
+ * for shmem files), and we want to be sure it's actually sealed.
|
||||||
|
+ */
|
||||||
|
+static int is_self_cloned(void)
|
||||||
|
+{
|
||||||
|
+ int fd, ret, is_cloned = 0;
|
||||||
|
+
|
||||||
|
+ fd = open("/proc/self/exe", O_RDONLY|O_CLOEXEC);
|
||||||
|
+ if (fd < 0)
|
||||||
|
+ return -ENOTRECOVERABLE;
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_MEMFD_CREATE
|
||||||
|
+ ret = fcntl(fd, F_GET_SEALS);
|
||||||
|
+ is_cloned = (ret == RUNC_MEMFD_SEALS);
|
||||||
|
+#else
|
||||||
|
+ struct stat statbuf = {0};
|
||||||
|
+ ret = fstat(fd, &statbuf);
|
||||||
|
+ if (ret >= 0)
|
||||||
|
+ is_cloned = (statbuf.st_nlink == 0);
|
||||||
|
+#endif
|
||||||
|
+ close(fd);
|
||||||
|
+ return is_cloned;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Basic wrapper around mmap(2) that gives you the file length so you can
|
||||||
|
+ * safely treat it as an ordinary buffer. Only gives you read access.
|
||||||
|
+ */
|
||||||
|
+static char *read_file(char *path, size_t *length)
|
||||||
|
+{
|
||||||
|
+ int fd;
|
||||||
|
+ char buf[4096], *copy = NULL;
|
||||||
|
+
|
||||||
|
+ if (!length)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ fd = open(path, O_RDONLY | O_CLOEXEC);
|
||||||
|
+ if (fd < 0)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ *length = 0;
|
||||||
|
+ for (;;) {
|
||||||
|
+ int n;
|
||||||
|
+
|
||||||
|
+ n = read(fd, buf, sizeof(buf));
|
||||||
|
+ if (n < 0)
|
||||||
|
+ goto error;
|
||||||
|
+ if (!n)
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ copy = must_realloc(copy, (*length + n) * sizeof(*copy));
|
||||||
|
+ memcpy(copy + *length, buf, n);
|
||||||
|
+ *length += n;
|
||||||
|
+ }
|
||||||
|
+ close(fd);
|
||||||
|
+ return copy;
|
||||||
|
+
|
||||||
|
+error:
|
||||||
|
+ close(fd);
|
||||||
|
+ free(copy);
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * A poor-man's version of "xargs -0". Basically parses a given block of
|
||||||
|
+ * NUL-delimited data, within the given length and adds a pointer to each entry
|
||||||
|
+ * to the array of pointers.
|
||||||
|
+ */
|
||||||
|
+static int parse_xargs(char *data, int data_length, char ***output)
|
||||||
|
+{
|
||||||
|
+ int num = 0;
|
||||||
|
+ char *cur = data;
|
||||||
|
+
|
||||||
|
+ if (!data || *output != NULL)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ while (cur < data + data_length) {
|
||||||
|
+ num++;
|
||||||
|
+ *output = must_realloc(*output, (num + 1) * sizeof(**output));
|
||||||
|
+ (*output)[num - 1] = cur;
|
||||||
|
+ cur += strlen(cur) + 1;
|
||||||
|
+ }
|
||||||
|
+ (*output)[num] = NULL;
|
||||||
|
+ return num;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * "Parse" out argv and envp from /proc/self/cmdline and /proc/self/environ.
|
||||||
|
+ * This is necessary because we are running in a context where we don't have a
|
||||||
|
+ * main() that we can just get the arguments from.
|
||||||
|
+ */
|
||||||
|
+static int fetchve(char ***argv, char ***envp)
|
||||||
|
+{
|
||||||
|
+ char *cmdline = NULL, *environ = NULL;
|
||||||
|
+ size_t cmdline_size, environ_size;
|
||||||
|
+
|
||||||
|
+ cmdline = read_file("/proc/self/cmdline", &cmdline_size);
|
||||||
|
+ if (!cmdline)
|
||||||
|
+ goto error;
|
||||||
|
+ environ = read_file("/proc/self/environ", &environ_size);
|
||||||
|
+ if (!environ)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
+ if (parse_xargs(cmdline, cmdline_size, argv) <= 0)
|
||||||
|
+ goto error;
|
||||||
|
+ if (parse_xargs(environ, environ_size, envp) <= 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+error:
|
||||||
|
+ free(environ);
|
||||||
|
+ free(cmdline);
|
||||||
|
+ return -EINVAL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int clone_binary(void)
|
||||||
|
+{
|
||||||
|
+ int binfd, memfd;
|
||||||
|
+ ssize_t sent = 0;
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_MEMFD_CREATE
|
||||||
|
+ memfd = memfd_create(RUNC_MEMFD_COMMENT, MFD_CLOEXEC | MFD_ALLOW_SEALING);
|
||||||
|
+#else
|
||||||
|
+ memfd = open("/tmp", O_TMPFILE | O_EXCL | O_RDWR | O_CLOEXEC, 0711);
|
||||||
|
+#endif
|
||||||
|
+ if (memfd < 0)
|
||||||
|
+ return -ENOTRECOVERABLE;
|
||||||
|
+
|
||||||
|
+ binfd = open("/proc/self/exe", O_RDONLY | O_CLOEXEC);
|
||||||
|
+ if (binfd < 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
+ sent = sendfile(memfd, binfd, NULL, RUNC_SENDFILE_MAX);
|
||||||
|
+ close(binfd);
|
||||||
|
+ if (sent < 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_MEMFD_CREATE
|
||||||
|
+ int err = fcntl(memfd, F_ADD_SEALS, RUNC_MEMFD_SEALS);
|
||||||
|
+ if (err < 0)
|
||||||
|
+ goto error;
|
||||||
|
+#else
|
||||||
|
+ /* Need to re-open "memfd" as read-only to avoid execve(2) giving -EXTBUSY. */
|
||||||
|
+ int newfd;
|
||||||
|
+ char *fdpath = NULL;
|
||||||
|
+
|
||||||
|
+ if (asprintf(&fdpath, "/proc/self/fd/%d", memfd) < 0)
|
||||||
|
+ goto error;
|
||||||
|
+ newfd = open(fdpath, O_RDONLY | O_CLOEXEC);
|
||||||
|
+ free(fdpath);
|
||||||
|
+ if (newfd < 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
+ close(memfd);
|
||||||
|
+ memfd = newfd;
|
||||||
|
+#endif
|
||||||
|
+ return memfd;
|
||||||
|
+
|
||||||
|
+error:
|
||||||
|
+ close(memfd);
|
||||||
|
+ return -EIO;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int ensure_cloned_binary(void)
|
||||||
|
+{
|
||||||
|
+ int execfd;
|
||||||
|
+ char **argv = NULL, **envp = NULL;
|
||||||
|
+
|
||||||
|
+ /* Check that we're not self-cloned, and if we are then bail. */
|
||||||
|
+ int cloned = is_self_cloned();
|
||||||
|
+ if (cloned > 0 || cloned == -ENOTRECOVERABLE)
|
||||||
|
+ return cloned;
|
||||||
|
+
|
||||||
|
+ if (fetchve(&argv, &envp) < 0)
|
||||||
|
+ return -EINVAL;
|
||||||
|
+
|
||||||
|
+ execfd = clone_binary();
|
||||||
|
+ if (execfd < 0)
|
||||||
|
+ return -EIO;
|
||||||
|
+
|
||||||
|
+ fexecve(execfd, argv, envp);
|
||||||
|
+ return -ENOEXEC;
|
||||||
|
+}
|
||||||
|
diff --git a/libcontainer/nsenter/nsexec.c b/libcontainer/nsenter/nsexec.c
|
||||||
|
index 28269dfc..7750af35 100644
|
||||||
|
--- a/libcontainer/nsenter/nsexec.c
|
||||||
|
+++ b/libcontainer/nsenter/nsexec.c
|
||||||
|
@@ -534,6 +534,9 @@ void join_namespaces(char *nslist)
|
||||||
|
free(namespaces);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Defined in cloned_binary.c. */
|
||||||
|
+extern int ensure_cloned_binary(void);
|
||||||
|
+
|
||||||
|
void nsexec(void)
|
||||||
|
{
|
||||||
|
int pipenum;
|
||||||
|
@@ -549,6 +552,14 @@ void nsexec(void)
|
||||||
|
if (pipenum == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * We need to re-exec if we are not in a cloned binary. This is necessary
|
||||||
|
+ * to ensure that containers won't be able to access the host binary
|
||||||
|
+ * through /proc/self/exe. See CVE-2019-5736.
|
||||||
|
+ */
|
||||||
|
+ if (ensure_cloned_binary() < 0)
|
||||||
|
+ bail("could not ensure we are a cloned binary");
|
||||||
|
+
|
||||||
|
/* Parse all of the netlink configuration. */
|
||||||
|
nl_parse(pipenum, &config);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
@ -3,13 +3,14 @@ config BR2_PACKAGE_RUNC
|
|||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
|
depends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve
|
||||||
help
|
help
|
||||||
runC is a CLI tool for spawning and running containers
|
runC is a CLI tool for spawning and running containers
|
||||||
according to the OCP specification.
|
according to the OCP specification.
|
||||||
|
|
||||||
https://github.com/opencontainers/runc
|
https://github.com/opencontainers/runc
|
||||||
|
|
||||||
comment "runc needs a toolchain w/ threads"
|
comment "runc needs a glibc or musl toolchain toolchain w/ threads"
|
||||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS && \
|
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS && \
|
||||||
BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAN_USES_UCLIBC
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
From 68b0591cf37760e09e358533bbcecf36eddfceed Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
|
Date: Sun, 10 Feb 2019 14:46:41 +0100
|
||||||
|
Subject: [PATCH] src/Makefile.am: add missing @RT_LIB@ for sg_turs
|
||||||
|
|
||||||
|
The sg_turs program uses clock_gettime(), so it should link against
|
||||||
|
librt, as provided by @RT_LIB@.
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
|
---
|
||||||
|
src/Makefile.am | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||||
|
index 881cf29..0eba680 100644
|
||||||
|
--- a/src/Makefile.am
|
||||||
|
+++ b/src/Makefile.am
|
||||||
|
@@ -170,7 +170,7 @@ sg_test_rwbuf_LDADD = ../lib/libsgutils2.la
|
||||||
|
|
||||||
|
sg_timestamp_LDADD = ../lib/libsgutils2.la
|
||||||
|
|
||||||
|
-sg_turs_LDADD = ../lib/libsgutils2.la
|
||||||
|
+sg_turs_LDADD = ../lib/libsgutils2.la @RT_LIB@
|
||||||
|
|
||||||
|
sg_unmap_LDADD = ../lib/libsgutils2.la
|
||||||
|
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -14,7 +14,7 @@ SG3_UTILS_LICENSE := $(SG3_UTILS_LICENSE), GPL-2.0+ (programs), BSD-3-Clause (pr
|
|||||||
endif
|
endif
|
||||||
SG3_UTILS_LICENSE_FILES = COPYING BSD_LICENSE
|
SG3_UTILS_LICENSE_FILES = COPYING BSD_LICENSE
|
||||||
|
|
||||||
# Patching configure.ac
|
# Patching configure.ac/Makefile.am
|
||||||
SG3_UTILS_AUTORECONF = YES
|
SG3_UTILS_AUTORECONF = YES
|
||||||
|
|
||||||
# install the libsgutils2 library
|
# install the libsgutils2 library
|
||||||
|
97
package/sqlcipher/0001-Support-OpenSSL-1.1.0-and-prior.patch
Normal file
97
package/sqlcipher/0001-Support-OpenSSL-1.1.0-and-prior.patch
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
From 43f71fa7b4c6a20f4078b9098369abb8d38a5617 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Parker <nparker@zetetic.net>
|
||||||
|
Date: Fri, 9 Dec 2016 11:47:39 -0600
|
||||||
|
Subject: [PATCH] Support OpenSSL 1.1.0 and prior
|
||||||
|
|
||||||
|
(cherry picked from commit 939c83a007e4724436c3955ae2afd8b11b92d867)
|
||||||
|
Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com>
|
||||||
|
---
|
||||||
|
src/crypto_openssl.c | 53 +++++++++++++++++++++++++++++++++++++---------------
|
||||||
|
1 file changed, 38 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/crypto_openssl.c b/src/crypto_openssl.c
|
||||||
|
index 150ab92..6822325 100644
|
||||||
|
--- a/src/crypto_openssl.c
|
||||||
|
+++ b/src/crypto_openssl.c
|
||||||
|
@@ -47,6 +47,29 @@ static unsigned int openssl_external_init = 0;
|
||||||
|
static unsigned int openssl_init_count = 0;
|
||||||
|
static sqlite3_mutex* openssl_rand_mutex = NULL;
|
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+static HMAC_CTX *HMAC_CTX_new(void)
|
||||||
|
+{
|
||||||
|
+ HMAC_CTX *ctx = OPENSSL_malloc(sizeof(*ctx));
|
||||||
|
+ if (ctx != NULL) {
|
||||||
|
+ HMAC_CTX_init(ctx);
|
||||||
|
+ }
|
||||||
|
+ return ctx;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// Per 1.1.0 (https://wiki.openssl.org/index.php/1.1_API_Changes)
|
||||||
|
+// HMAC_CTX_free should call HMAC_CTX_cleanup, then EVP_MD_CTX_Cleanup.
|
||||||
|
+// HMAC_CTX_cleanup internally calls EVP_MD_CTX_cleanup so these
|
||||||
|
+// calls are not needed.
|
||||||
|
+static void HMAC_CTX_free(HMAC_CTX *ctx)
|
||||||
|
+{
|
||||||
|
+ if (ctx != NULL) {
|
||||||
|
+ HMAC_CTX_cleanup(ctx);
|
||||||
|
+ OPENSSL_free(ctx);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static int sqlcipher_openssl_add_random(void *ctx, void *buffer, int length) {
|
||||||
|
#ifndef SQLCIPHER_OPENSSL_NO_MUTEX_RAND
|
||||||
|
sqlite3_mutex_enter(openssl_rand_mutex);
|
||||||
|
@@ -143,14 +166,14 @@ static int sqlcipher_openssl_random (void *ctx, void *buffer, int length) {
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sqlcipher_openssl_hmac(void *ctx, unsigned char *hmac_key, int key_sz, unsigned char *in, int in_sz, unsigned char *in2, int in2_sz, unsigned char *out) {
|
||||||
|
- HMAC_CTX hctx;
|
||||||
|
unsigned int outlen;
|
||||||
|
- HMAC_CTX_init(&hctx);
|
||||||
|
- HMAC_Init_ex(&hctx, hmac_key, key_sz, EVP_sha1(), NULL);
|
||||||
|
- HMAC_Update(&hctx, in, in_sz);
|
||||||
|
- HMAC_Update(&hctx, in2, in2_sz);
|
||||||
|
- HMAC_Final(&hctx, out, &outlen);
|
||||||
|
- HMAC_CTX_cleanup(&hctx);
|
||||||
|
+ HMAC_CTX* hctx = HMAC_CTX_new();
|
||||||
|
+ if(hctx == NULL) return SQLITE_ERROR;
|
||||||
|
+ HMAC_Init_ex(hctx, hmac_key, key_sz, EVP_sha1(), NULL);
|
||||||
|
+ HMAC_Update(hctx, in, in_sz);
|
||||||
|
+ HMAC_Update(hctx, in2, in2_sz);
|
||||||
|
+ HMAC_Final(hctx, out, &outlen);
|
||||||
|
+ HMAC_CTX_free(hctx);
|
||||||
|
return SQLITE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -160,18 +183,18 @@ static int sqlcipher_openssl_kdf(void *ctx, const unsigned char *pass, int pass_
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sqlcipher_openssl_cipher(void *ctx, int mode, unsigned char *key, int key_sz, unsigned char *iv, unsigned char *in, int in_sz, unsigned char *out) {
|
||||||
|
- EVP_CIPHER_CTX ectx;
|
||||||
|
int tmp_csz, csz;
|
||||||
|
-
|
||||||
|
- EVP_CipherInit(&ectx, ((openssl_ctx *)ctx)->evp_cipher, NULL, NULL, mode);
|
||||||
|
- EVP_CIPHER_CTX_set_padding(&ectx, 0); // no padding
|
||||||
|
- EVP_CipherInit(&ectx, NULL, key, iv, mode);
|
||||||
|
- EVP_CipherUpdate(&ectx, out, &tmp_csz, in, in_sz);
|
||||||
|
+ EVP_CIPHER_CTX* ectx = EVP_CIPHER_CTX_new();
|
||||||
|
+ if(ectx == NULL) return SQLITE_ERROR;
|
||||||
|
+ EVP_CipherInit_ex(ectx, ((openssl_ctx *)ctx)->evp_cipher, NULL, NULL, NULL, mode);
|
||||||
|
+ EVP_CIPHER_CTX_set_padding(ectx, 0); // no padding
|
||||||
|
+ EVP_CipherInit_ex(ectx, NULL, NULL, key, iv, mode);
|
||||||
|
+ EVP_CipherUpdate(ectx, out, &tmp_csz, in, in_sz);
|
||||||
|
csz = tmp_csz;
|
||||||
|
out += tmp_csz;
|
||||||
|
- EVP_CipherFinal(&ectx, out, &tmp_csz);
|
||||||
|
+ EVP_CipherFinal_ex(ectx, out, &tmp_csz);
|
||||||
|
csz += tmp_csz;
|
||||||
|
- EVP_CIPHER_CTX_cleanup(&ectx);
|
||||||
|
+ EVP_CIPHER_CTX_free(ectx);
|
||||||
|
assert(in_sz == csz);
|
||||||
|
return SQLITE_OK;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.9.1
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
From 6b4dbecbcfe35d36fea264c04c41b338852d4e88 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Parker <nparker@zetetic.net>
|
||||||
|
Date: Wed, 1 Mar 2017 15:35:43 -0600
|
||||||
|
Subject: [PATCH] Guard OpenSSL init and cleanup routines on versions less
|
||||||
|
than 1.1.0
|
||||||
|
|
||||||
|
(cherry picked from commit 1c495b933cee3381f1ea6a70edcbcda1754d7409)
|
||||||
|
Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com>
|
||||||
|
|
||||||
|
Conflicts:
|
||||||
|
src/crypto_openssl.c
|
||||||
|
---
|
||||||
|
src/crypto_openssl.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/crypto_openssl.c b/src/crypto_openssl.c
|
||||||
|
index 6822325..09bc2a2 100644
|
||||||
|
--- a/src/crypto_openssl.c
|
||||||
|
+++ b/src/crypto_openssl.c
|
||||||
|
@@ -102,7 +102,9 @@ static int sqlcipher_openssl_activate(void *ctx) {
|
||||||
|
|
||||||
|
if(openssl_init_count == 0 && openssl_external_init == 0) {
|
||||||
|
/* if the library was not externally initialized, then should be now */
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef SQLCIPHER_OPENSSL_NO_MUTEX_RAND
|
||||||
|
@@ -131,7 +133,9 @@ static int sqlcipher_openssl_deactivate(void *ctx) {
|
||||||
|
Note: this code will only be reached if OpensSSL_add_all_algorithms()
|
||||||
|
is called by SQLCipher internally. This should prevent SQLCipher from
|
||||||
|
"cleaning up" openssl when it was initialized externally by the program */
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
EVP_cleanup();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
#ifndef SQLCIPHER_OPENSSL_NO_MUTEX_RAND
|
||||||
|
sqlite3_mutex_free(openssl_rand_mutex);
|
||||||
|
--
|
||||||
|
1.9.1
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From 3da532754fb2bb7d379d4386a8c3339742edfb0b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stephen Lombardo <sjlombardo@zetetic.net>
|
||||||
|
Date: Wed, 10 Oct 2018 15:55:49 -0400
|
||||||
|
Subject: [PATCH] correct compliation under openssl 1.1.x
|
||||||
|
|
||||||
|
(cherry picked from commit 57ea35296ce7f2c1c93ce79194eea19a008b69ae)
|
||||||
|
Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com>
|
||||||
|
|
||||||
|
Conflicts:
|
||||||
|
src/crypto_openssl.c
|
||||||
|
---
|
||||||
|
src/crypto_openssl.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/crypto_openssl.c b/src/crypto_openssl.c
|
||||||
|
index 09bc2a2..57a1104 100644
|
||||||
|
--- a/src/crypto_openssl.c
|
||||||
|
+++ b/src/crypto_openssl.c
|
||||||
|
@@ -47,7 +47,7 @@ static unsigned int openssl_external_init = 0;
|
||||||
|
static unsigned int openssl_init_count = 0;
|
||||||
|
static sqlite3_mutex* openssl_rand_mutex = NULL;
|
||||||
|
|
||||||
|
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+#if (defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L)
|
||||||
|
static HMAC_CTX *HMAC_CTX_new(void)
|
||||||
|
{
|
||||||
|
HMAC_CTX *ctx = OPENSSL_malloc(sizeof(*ctx));
|
||||||
|
@@ -102,7 +102,7 @@ static int sqlcipher_openssl_activate(void *ctx) {
|
||||||
|
|
||||||
|
if(openssl_init_count == 0 && openssl_external_init == 0) {
|
||||||
|
/* if the library was not externally initialized, then should be now */
|
||||||
|
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+#if (defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L)
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -133,7 +133,7 @@ static int sqlcipher_openssl_deactivate(void *ctx) {
|
||||||
|
Note: this code will only be reached if OpensSSL_add_all_algorithms()
|
||||||
|
is called by SQLCipher internally. This should prevent SQLCipher from
|
||||||
|
"cleaning up" openssl when it was initialized externally by the program */
|
||||||
|
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+#if (defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L)
|
||||||
|
EVP_cleanup();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.9.1
|
||||||
|
|
@ -3,6 +3,7 @@ config BR2_PACKAGE_SQLCIPHER
|
|||||||
depends on !BR2_PACKAGE_SQLITE
|
depends on !BR2_PACKAGE_SQLITE
|
||||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||||
select BR2_PACKAGE_OPENSSL
|
select BR2_PACKAGE_OPENSSL
|
||||||
|
select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
|
||||||
help
|
help
|
||||||
SQLCipher is an SQLite extension that provides 256 bits AES
|
SQLCipher is an SQLite extension that provides 256 bits AES
|
||||||
encryption of database files. Note that it is a fork of
|
encryption of database files. Note that it is a fork of
|
||||||
|
@ -10,6 +10,7 @@ SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, s
|
|||||||
SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
|
SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
|
||||||
SYSTEMD_INSTALL_STAGING = YES
|
SYSTEMD_INSTALL_STAGING = YES
|
||||||
SYSTEMD_DEPENDENCIES = \
|
SYSTEMD_DEPENDENCIES = \
|
||||||
|
$(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \
|
||||||
host-gperf \
|
host-gperf \
|
||||||
host-intltool \
|
host-intltool \
|
||||||
kmod \
|
kmod \
|
||||||
@ -23,7 +24,6 @@ SYSTEMD_CONF_OPTS += \
|
|||||||
-Dblkid=true \
|
-Dblkid=true \
|
||||||
-Dman=false \
|
-Dman=false \
|
||||||
-Dima=false \
|
-Dima=false \
|
||||||
-Dlibcryptsetup=false \
|
|
||||||
-Defi=false \
|
-Defi=false \
|
||||||
-Dgnu-efi=false \
|
-Dgnu-efi=false \
|
||||||
-Dldconfig=false \
|
-Dldconfig=false \
|
||||||
@ -57,6 +57,13 @@ else
|
|||||||
SYSTEMD_CONF_OPTS += -Daudit=false
|
SYSTEMD_CONF_OPTS += -Daudit=false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BR2_PACKAGE_CRYPTSETUP),y)
|
||||||
|
SYSTEMD_DEPENDENCIES += cryptsetup
|
||||||
|
SYSTEMD_CONF_OPTS += -Dlibcryptsetup=true
|
||||||
|
else
|
||||||
|
SYSTEMD_CONF_OPTS += -Dlibcryptsetup=false
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
|
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
|
||||||
SYSTEMD_DEPENDENCIES += elfutils
|
SYSTEMD_DEPENDENCIES += elfutils
|
||||||
SYSTEMD_CONF_OPTS += -Delfutils=true
|
SYSTEMD_CONF_OPTS += -Delfutils=true
|
||||||
@ -117,6 +124,13 @@ else
|
|||||||
SYSTEMD_CONF_OPTS += -Dpam=false
|
SYSTEMD_CONF_OPTS += -Dpam=false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BR2_PACKAGE_VALGRIND),y)
|
||||||
|
SYSTEMD_DEPENDENCIES += valgrind
|
||||||
|
SYSTEMD_CONF_OPTS += -Dvalgrind=true
|
||||||
|
else
|
||||||
|
SYSTEMD_CONF_OPTS += -Dvalgrind=false
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(BR2_PACKAGE_XZ),y)
|
ifeq ($(BR2_PACKAGE_XZ),y)
|
||||||
SYSTEMD_DEPENDENCIES += xz
|
SYSTEMD_DEPENDENCIES += xz
|
||||||
SYSTEMD_CONF_OPTS += -Dxz=true
|
SYSTEMD_CONF_OPTS += -Dxz=true
|
||||||
|
@ -4,19 +4,12 @@ import infra.basetest
|
|||||||
|
|
||||||
|
|
||||||
class TestDockerCompose(infra.basetest.BRTest):
|
class TestDockerCompose(infra.basetest.BRTest):
|
||||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
config = \
|
||||||
"""
|
"""
|
||||||
BR2_x86_64=y
|
BR2_x86_64=y
|
||||||
BR2_x86_core2=y
|
BR2_x86_core2=y
|
||||||
BR2_TOOLCHAIN_EXTERNAL=y
|
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
|
BR2_KERNEL_HEADERS_4_19=y
|
||||||
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
|
|
||||||
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-core2-full-2018.05.tar.bz2"
|
|
||||||
BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
|
|
||||||
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y
|
|
||||||
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
|
|
||||||
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
|
|
||||||
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
|
||||||
BR2_SYSTEM_DHCP="eth0"
|
BR2_SYSTEM_DHCP="eth0"
|
||||||
BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
|
BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
|
||||||
BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
|
BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
|
||||||
|
@ -225,6 +225,22 @@ class BuildrootPackage():
|
|||||||
self.filename = self.used_url['filename']
|
self.filename = self.used_url['filename']
|
||||||
self.url = self.used_url['url']
|
self.url = self.used_url['url']
|
||||||
|
|
||||||
|
def check_archive(self, members):
|
||||||
|
"""
|
||||||
|
Check archive content before extracting
|
||||||
|
|
||||||
|
Keyword arguments:
|
||||||
|
members -- list of archive members
|
||||||
|
"""
|
||||||
|
# Protect against https://github.com/snyk/zip-slip-vulnerability
|
||||||
|
# Older python versions do not validate that the extracted files are
|
||||||
|
# inside the target directory. Detect and error out on evil paths
|
||||||
|
evil = [e for e in members if os.path.relpath(e).startswith(('/', '..'))]
|
||||||
|
if evil:
|
||||||
|
print('ERROR: Refusing to extract {} with suspicious members {}'.format(
|
||||||
|
self.filename, evil))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
def extract_package(self, tmp_path):
|
def extract_package(self, tmp_path):
|
||||||
"""
|
"""
|
||||||
Extract the package contents into a directrory
|
Extract the package contents into a directrory
|
||||||
@ -249,6 +265,7 @@ class BuildrootPackage():
|
|||||||
print('Removing {pkg}...'.format(pkg=tmp_pkg))
|
print('Removing {pkg}...'.format(pkg=tmp_pkg))
|
||||||
shutil.rmtree(tmp_pkg)
|
shutil.rmtree(tmp_pkg)
|
||||||
os.makedirs(tmp_pkg)
|
os.makedirs(tmp_pkg)
|
||||||
|
self.check_archive(as_zipfile.namelist())
|
||||||
as_zipfile.extractall(tmp_pkg)
|
as_zipfile.extractall(tmp_pkg)
|
||||||
pkg_filename = self.filename.split(".zip")[0]
|
pkg_filename = self.filename.split(".zip")[0]
|
||||||
else:
|
else:
|
||||||
@ -264,6 +281,7 @@ class BuildrootPackage():
|
|||||||
print('Removing {pkg}...'.format(pkg=tmp_pkg))
|
print('Removing {pkg}...'.format(pkg=tmp_pkg))
|
||||||
shutil.rmtree(tmp_pkg)
|
shutil.rmtree(tmp_pkg)
|
||||||
os.makedirs(tmp_pkg)
|
os.makedirs(tmp_pkg)
|
||||||
|
self.check_archive(as_tarfile.getnames())
|
||||||
as_tarfile.extractall(tmp_pkg)
|
as_tarfile.extractall(tmp_pkg)
|
||||||
pkg_filename = self.filename.split(".tar")[0]
|
pkg_filename = self.filename.split(".tar")[0]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user