Import Debian changes 0.4.0-ok1
bubblewrap (0.4.0-ok1) yangtze; urgency=medium * Build for openKylin.
This commit is contained in:
parent
5686b945c0
commit
aac4840653
|
@ -0,0 +1 @@
|
|||
demos/*
|
|
@ -0,0 +1,5 @@
|
|||
bubblewrap (0.4.0-ok1) yangtze; urgency=medium
|
||||
|
||||
* Build for openKylin.
|
||||
|
||||
-- openKylinBot <openKylinBot@openkylin.com> Mon, 25 Apr 2022 22:03:04 +0800
|
|
@ -0,0 +1 @@
|
|||
config.log
|
|
@ -0,0 +1,36 @@
|
|||
Source: bubblewrap
|
||||
Section: admin
|
||||
Priority: optional
|
||||
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||
XSBC-Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
|
||||
Uploaders:
|
||||
Laszlo Boszormenyi (GCS) <gcs@debian.org>,
|
||||
Simon McVittie <smcv@debian.org>,
|
||||
Build-Depends:
|
||||
automake (>= 1.14.1),
|
||||
bash-completion,
|
||||
debhelper-compat (= 12),
|
||||
docbook-xml,
|
||||
docbook-xsl,
|
||||
libcap-dev,
|
||||
libselinux1-dev (>= 2.1.9),
|
||||
pkg-config,
|
||||
python3 <!nocheck>,
|
||||
xsltproc,
|
||||
Standards-Version: 4.4.1
|
||||
Homepage: https://github.com/projectatomic/bubblewrap
|
||||
Vcs-Git: https://salsa.debian.org/debian/bubblewrap.git
|
||||
Vcs-Browser: https://salsa.debian.org/debian/bubblewrap
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: bubblewrap
|
||||
Architecture: linux-any
|
||||
Multi-arch: foreign
|
||||
Depends:
|
||||
${misc:Depends},
|
||||
${shlibs:Depends},
|
||||
Breaks:
|
||||
flatpak (<< 0.8.0-0),
|
||||
Description: setuid wrapper for unprivileged chroot and namespace manipulation
|
||||
Core execution engine for unprivileged containers that works as a setuid
|
||||
binary on kernels without user namespaces.
|
|
@ -0,0 +1,68 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: bubblewrap
|
||||
Source: https://github.com/projectatomic/bubblewrap/
|
||||
|
||||
Files: *
|
||||
Copyright: 2016 Alexander Larsson
|
||||
License: LGPL-2+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2016 Laszlo Boszormenyi (GCS) <gcs@debian.org>
|
||||
License: LGPL-2+
|
||||
|
||||
Files: m4/attributes.m4
|
||||
Copyright:
|
||||
2006-2008 Diego Pettenò <flameeyes@gmail.com>
|
||||
2006-2008 xine project
|
||||
2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
|
||||
License: GPL-2+ with Autoconf exception
|
||||
|
||||
License: LGPL-2+
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
.
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
||||
USA.
|
||||
.
|
||||
On Debian systems, the full text of the GNU Library General Public License
|
||||
version 2 can be found in the file `/usr/share/common-licenses/LGPL-2'.
|
||||
|
||||
License: GPL-2+ with Autoconf exception
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA.
|
||||
.
|
||||
As a special exception, the copyright owners of the
|
||||
macro gives unlimited permission to copy, distribute and modify the
|
||||
configure scripts that are the output of Autoconf when processing the
|
||||
Macro. You need not follow the terms of the GNU General Public
|
||||
License when using or distributing such scripts, even though portions
|
||||
of the text of the Macro appear in them. The GNU General Public
|
||||
License (GPL) does govern all other use of the material that
|
||||
constitutes the Autoconf Macro.
|
||||
.
|
||||
This special exception to the GPL applies to versions of the
|
||||
Autoconf Macro released by this project. When you make and
|
||||
distribute a modified version of the Autoconf Macro, you may extend
|
||||
this special exception to the GPL to apply to your modified version as
|
||||
well.
|
|
@ -0,0 +1 @@
|
|||
README.md
|
|
@ -0,0 +1,6 @@
|
|||
[DEFAULT]
|
||||
pristine-tar = True
|
||||
debian-branch = debian/master
|
||||
upstream-branch = upstream/latest
|
||||
patch-numbers = False
|
||||
upstream-vcs-tag = v%(version)s
|
|
@ -0,0 +1,2 @@
|
|||
# this is known and intentional
|
||||
bubblewrap: setuid-binary usr/bin/bwrap 4755 root/root
|
|
@ -0,0 +1,84 @@
|
|||
From 5404a15d34301a5a0dd5930203e03c76b80ebf21 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Larsson <alexl@redhat.com>
|
||||
Date: Thu, 26 Mar 2020 15:36:44 +0100
|
||||
Subject: [PATCH 1/3] Don't rely on geteuid() to know when to switch back from
|
||||
setuid root
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
As pointed out by Stephen Röttger <sroettger@google.com>, in
|
||||
drop_privs() we only drop root in the setuid case if geteuid() is
|
||||
0. Typically geteuid() == 0 means we were setuid root and have not yet
|
||||
switched away from it.
|
||||
|
||||
However, it is possible to make the geteuid call fail by passing a
|
||||
--userns2 namespace which doesn't have 0 mapped (i.e. where geteuid()
|
||||
will return the owerflow uid instead).
|
||||
|
||||
If you do this, the pid 1 process in the sandbox will continue running
|
||||
as host uid 0, while dropping the dumpable flag, and at this point the
|
||||
user can ptrace attach the process and have root permissions.
|
||||
|
||||
We fix this by not relying on the geteuid() call to know when we need
|
||||
to drop root uid, but rather keep track of whether we already switched
|
||||
from it.
|
||||
---
|
||||
bubblewrap.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/bubblewrap.c
|
||||
+++ b/bubblewrap.c
|
||||
@@ -834,11 +834,13 @@ switch_to_user_with_privs (void)
|
||||
|
||||
/* Call setuid() and use capset() to adjust capabilities */
|
||||
static void
|
||||
-drop_privs (bool keep_requested_caps)
|
||||
+drop_privs (bool keep_requested_caps,
|
||||
+ bool already_changed_uid)
|
||||
{
|
||||
assert (!keep_requested_caps || !is_privileged);
|
||||
/* Drop root uid */
|
||||
- if (geteuid () == 0 && setuid (opt_sandbox_uid) < 0)
|
||||
+ if (is_privileged && !already_changed_uid &&
|
||||
+ setuid (opt_sandbox_uid) < 0)
|
||||
die_with_error ("unable to drop root uid");
|
||||
|
||||
drop_all_caps (keep_requested_caps);
|
||||
@@ -2296,6 +2298,9 @@ main (int argc,
|
||||
if (opt_userns_fd != -1 && is_privileged)
|
||||
die ("--userns doesn't work in setuid mode");
|
||||
|
||||
+ if (opt_userns2_fd != -1 && is_privileged)
|
||||
+ die ("--userns2 doesn't work in setuid mode");
|
||||
+
|
||||
/* We have to do this if we weren't installed setuid (and we're not
|
||||
* root), so let's just DWIM */
|
||||
if (!is_privileged && getuid () != 0 && opt_userns_fd == -1)
|
||||
@@ -2499,7 +2504,7 @@ main (int argc,
|
||||
die_with_error ("Setting userns2 failed");
|
||||
|
||||
/* We don't need any privileges in the launcher, drop them immediately. */
|
||||
- drop_privs (FALSE);
|
||||
+ drop_privs (FALSE, FALSE);
|
||||
|
||||
/* Optionally bind our lifecycle to that of the parent */
|
||||
handle_die_with_parent ();
|
||||
@@ -2674,7 +2679,7 @@ main (int argc,
|
||||
if (child == 0)
|
||||
{
|
||||
/* Unprivileged setup process */
|
||||
- drop_privs (FALSE);
|
||||
+ drop_privs (FALSE, TRUE);
|
||||
close (privsep_sockets[0]);
|
||||
setup_newroot (opt_unshare_pid, privsep_sockets[1]);
|
||||
exit (0);
|
||||
@@ -2769,7 +2774,7 @@ main (int argc,
|
||||
}
|
||||
|
||||
/* All privileged ops are done now, so drop caps we don't need */
|
||||
- drop_privs (!is_privileged);
|
||||
+ drop_privs (!is_privileged, TRUE);
|
||||
|
||||
if (opt_block_fd != -1)
|
||||
{
|
|
@ -0,0 +1,33 @@
|
|||
From: Simon McVittie <smcv@debian.org>
|
||||
Date: Wed, 17 Jan 2018 14:10:40 +0000
|
||||
Subject: Use Python 3 for test/demo code
|
||||
|
||||
Forwarded: not-needed
|
||||
---
|
||||
demos/userns-block-fd.py | 2 +-
|
||||
tests/test-run.sh | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/demos/userns-block-fd.py b/demos/userns-block-fd.py
|
||||
index 4c68242..2ef2fd6 100755
|
||||
--- a/demos/userns-block-fd.py
|
||||
+++ b/demos/userns-block-fd.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/env python3
|
||||
|
||||
import os, select, subprocess, sys, json
|
||||
|
||||
diff --git a/tests/test-run.sh b/tests/test-run.sh
|
||||
index a404c4e..1d2ffbc 100755
|
||||
--- a/tests/test-run.sh
|
||||
+++ b/tests/test-run.sh
|
||||
@@ -215,7 +215,7 @@ fi
|
||||
# Test --die-with-parent
|
||||
|
||||
cat >lockf-n.py <<EOF
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/env python3
|
||||
import struct,fcntl,sys
|
||||
path = sys.argv[1]
|
||||
if sys.argv[2] == 'wait':
|
|
@ -0,0 +1,4 @@
|
|||
debian/Use-Python-3-for-test-demo-code.patch
|
||||
# Temporary before this gets applied upstream
|
||||
update-output-patterns-libcap-2.29.patch
|
||||
CVE-2020-5291.patch
|
|
@ -0,0 +1,36 @@
|
|||
From 8b170a9a91ffaa0611f68b1fef64f881f2dadf8d Mon Sep 17 00:00:00 2001
|
||||
From: Christian Kastner <ckk@kvr.at>
|
||||
Date: Wed, 19 Feb 2020 10:03:05 +0100
|
||||
Subject: [PATCH] tests: Update output patterns for libcap >= 2.29
|
||||
|
||||
---
|
||||
tests/test-run.sh | 15 +++++++++++----
|
||||
1 file changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/test-run.sh b/tests/test-run.sh
|
||||
index a01f41c..702c480 100755
|
||||
--- a/tests/test-run.sh
|
||||
+++ b/tests/test-run.sh
|
||||
@@ -215,11 +215,18 @@ else
|
||||
$RUN $OPT --cap-drop ALL --unshare-pid capsh --print >caps.test
|
||||
assert_file_has_content caps.test 'Current: =$'
|
||||
# Check for dropping kill/fowner (we assume all uid 0 callers have this)
|
||||
- $RUN $OPT --cap-drop CAP_KILL --cap-drop CAP_FOWNER --unshare-pid capsh --print >caps.test
|
||||
- assert_not_file_has_content caps.test '^Current: =.*cap_kill'
|
||||
- assert_not_file_has_content caps.test '^Current: =.*cap_fowner'
|
||||
# But we should still have net_bind_service for example
|
||||
- assert_file_has_content caps.test '^Current: =.*cap_net_bind_service'
|
||||
+ $RUN $OPT --cap-drop CAP_KILL --cap-drop CAP_FOWNER --unshare-pid capsh --print >caps.test
|
||||
+ # capsh's output format changed from v2.29 -> drops are now indicated with -eip
|
||||
+ if grep 'Current: =.*+eip$' caps.test; then
|
||||
+ assert_not_file_has_content caps.test '^Current: =.*cap_kill.*+eip$'
|
||||
+ assert_not_file_has_content caps.test '^Current: =.*cap_fowner.*+eip$'
|
||||
+ assert_file_has_content caps.test '^Current: =.*cap_net_bind_service.*+eip$'
|
||||
+ else
|
||||
+ assert_file_has_content caps.test '^Current: =eip.*cap_kill.*-eip$'
|
||||
+ assert_file_has_content caps.test '^Current: =eip.*cap_fowner.*-eip$'
|
||||
+ assert_not_file_has_content caps.test '^Current: =.*cap_net_bind_service.*-eip$'
|
||||
+ fi
|
||||
echo "ok - we have the expected caps as uid 0"
|
||||
fi
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+pie,+bindnow
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
PKGDIR=$(CURDIR)/debian/bubblewrap
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_fixperms:
|
||||
chmod a+x $(PKGDIR)/usr/share/bash-completion/completions/bwrap
|
||||
# Ubuntu enables unprivileged user namespaces; no need for bwrap to be suid
|
||||
# there.
|
||||
ifneq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
|
||||
chmod 04755 $(PKGDIR)/usr/bin/bwrap
|
||||
dh_fixperms -Xbin/bwrap
|
||||
else
|
||||
dh_fixperms
|
||||
endif
|
||||
|
||||
.PHONY: override_dh_fixperms
|
||||
|
||||
override_dh_auto_test:
|
||||
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
||||
# Remove LD_PRELOAD so we don't run with faketime. It uses
|
||||
# sem_open(), but bubblewrap runs in an environment where that
|
||||
# can't work.
|
||||
env -u LD_PRELOAD dh_auto_test
|
||||
endif
|
||||
|
||||
.PHONY: override_dh_auto_test
|
|
@ -0,0 +1,3 @@
|
|||
include:
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/perl
|
||||
# vim:set sw=4 sts=4 et ft=perl:
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use IPC::Run qw(run);
|
||||
|
||||
sub run_ok {
|
||||
my $argv = shift;
|
||||
my $debug = join(' ', @$argv);
|
||||
ok(run($argv, @_), qq{"$debug" should succeed});
|
||||
}
|
||||
|
||||
my $out;
|
||||
run_ok([qw(bwrap --ro-bind / / /usr/bin/id -u)], '<', \undef, '>', \$out);
|
||||
is($out, `id -u`);
|
||||
run_ok([qw(bwrap --ro-bind / / /usr/bin/id -g)], '<', \undef, '>', \$out);
|
||||
is($out, `id -g`);
|
||||
|
||||
done_testing;
|
|
@ -0,0 +1,36 @@
|
|||
Tests:
|
||||
basic
|
||||
dev
|
||||
net
|
||||
upstream
|
||||
userns
|
||||
Restrictions: allow-stderr, isolation-machine
|
||||
Depends:
|
||||
bubblewrap,
|
||||
iproute2:native,
|
||||
libcap2-bin:native,
|
||||
libipc-run-perl:native,
|
||||
perl:native,
|
||||
python3:native,
|
||||
|
||||
Tests: upstream-usrmerge
|
||||
Restrictions: allow-stderr, isolation-machine, breaks-testbed
|
||||
Depends:
|
||||
bubblewrap,
|
||||
iproute2:native,
|
||||
libcap2-bin:native,
|
||||
libipc-run-perl:native,
|
||||
perl:native,
|
||||
python3:native,
|
||||
usrmerge
|
||||
|
||||
Tests:
|
||||
upstream-as-root
|
||||
Restrictions: allow-stderr, isolation-machine, needs-root
|
||||
Depends:
|
||||
bubblewrap,
|
||||
iproute2:native,
|
||||
libcap2-bin:native,
|
||||
libipc-run-perl:native,
|
||||
perl:native,
|
||||
python3:native,
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/perl
|
||||
# vim:set sw=4 sts=4 et ft=perl:
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use IPC::Run qw(run);
|
||||
|
||||
sub run_ok {
|
||||
my $argv = shift;
|
||||
my $debug = join(' ', @$argv);
|
||||
ok(run($argv, @_), qq{"$debug" should succeed});
|
||||
}
|
||||
|
||||
my $out;
|
||||
run_ok([qw(bwrap --ro-bind / / --dev /dev //bin/sh -c), "echo /dev/*"],
|
||||
'<', \undef, '>', \$out);
|
||||
like($out, qr{(^| )/dev/full( |$)});
|
||||
like($out, qr{(^| )/dev/null( |$)});
|
||||
like($out, qr{(^| )/dev/pts( |$)});
|
||||
like($out, qr{(^| )/dev/random( |$)});
|
||||
like($out, qr{(^| )/dev/shm( |$)});
|
||||
like($out, qr{(^| )/dev/stderr( |$)});
|
||||
like($out, qr{(^| )/dev/stdin( |$)});
|
||||
like($out, qr{(^| )/dev/stdout( |$)});
|
||||
like($out, qr{(^| )/dev/tty( |$)});
|
||||
like($out, qr{(^| )/dev/urandom( |$)});
|
||||
like($out, qr{(^| )/dev/zero( |$)});
|
||||
unlike($out, qr{(^| )/dev/hda( |$)});
|
||||
unlike($out, qr{(^| )/dev/dsp( |$)});
|
||||
unlike($out, qr{(^| )/dev/fuse( |$)});
|
||||
unlike($out, qr{(^| )/dev/kmsg( |$)});
|
||||
unlike($out, qr{(^| )/dev/loop0( |$)});
|
||||
unlike($out, qr{(^| )/dev/mem( |$)});
|
||||
unlike($out, qr{(^| )/dev/sda( |$)});
|
||||
unlike($out, qr{(^| )/dev/snd( |$)});
|
||||
unlike($out, qr{(^| )/dev/tty1( |$)});
|
||||
unlike($out, qr{(^| )/dev/vda( |$)});
|
||||
|
||||
done_testing;
|
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/perl
|
||||
# vim:set sw=4 sts=4 et ft=perl:
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use IPC::Run qw(run);
|
||||
|
||||
sub run_ok {
|
||||
my $argv = shift;
|
||||
my $debug = join(' ', @$argv);
|
||||
ok(run($argv, @_), qq{"$debug" should succeed});
|
||||
}
|
||||
|
||||
my $out;
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-net /bin/sh -c), "ip link ls"],
|
||||
'<', \undef, '>', \$out);
|
||||
|
||||
like($out, qr{^[0-9]+: lo:});
|
||||
unlike($out, qr{^[0-9]+: en[^:]*:});
|
||||
unlike($out, qr{^[0-9]+: eth[^:]*:});
|
||||
unlike($out, qr{^[0-9]+: wlan[^:]*:});
|
||||
|
||||
done_testing;
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
exec tests/test-run.sh
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
exec tests/test-run.sh
|
|
@ -0,0 +1 @@
|
|||
upstream
|
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/perl
|
||||
# vim:set sw=4 sts=4 et ft=perl:
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More;
|
||||
use IPC::Run qw(run);
|
||||
|
||||
sub run_ok {
|
||||
my $argv = shift;
|
||||
my $debug = join(' ', @$argv);
|
||||
ok(run($argv, @_), qq{"$debug" should succeed});
|
||||
}
|
||||
|
||||
my $out;
|
||||
|
||||
diag("Unshare user ID");
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 /usr/bin/id -u)],
|
||||
'<', \undef, '>', \$out);
|
||||
is($out, "2\n");
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 /usr/bin/id -g)],
|
||||
'<', \undef, '>', \$out);
|
||||
is($out, "3\n");
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 /bin/sh -c),
|
||||
'ls -l /etc/passwd'],
|
||||
'<', \undef, '>', \$out);
|
||||
like($out, qr{ nobody nogroup });
|
||||
|
||||
diag("Combine new /dev with new user namespace (#71)");
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 --dev /dev /bin/sh -c),
|
||||
'echo /dev/*'],
|
||||
'<', \undef, '>', \$out);
|
||||
like($out, qr{(^| )/dev/full( |$)});
|
||||
unlike($out, qr{(^| )/dev/tty1( |$)});
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 --dev /dev /usr/bin/id -u)],
|
||||
'<', \undef, '>', \$out);
|
||||
is($out, "2\n");
|
||||
run_ok([qw(bwrap --ro-bind / / --unshare-user --uid 2 --gid 3 --dev /dev /usr/bin/id -g)],
|
||||
'<', \undef, '>', \$out);
|
||||
is($out, "3\n");
|
||||
|
||||
done_testing;
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
Name: Bubblewrap
|
||||
Repository: https://github.com/projectatomic/bubblewrap
|
||||
Repository-Browse: https://github.com/projectatomic/bubblewrap
|
||||
Bug-Database: https://github.com/projectatomic/bubblewrap/issues
|
||||
Bug-Submit: https://github.com/projectatomic/bubblewrap/issues/new
|
||||
...
|
||||
# vim:set ft=yaml:
|
|
@ -0,0 +1,3 @@
|
|||
version=4
|
||||
opts="compression=xz,dversionmangle=s/\+(?:git)?[0-9]*\+g[0-9a-f]*//" \
|
||||
https://github.com/projectatomic/@PACKAGE@/releases .*/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@
|
Loading…
Reference in New Issue