Commit graph

44953 commits

Author SHA1 Message Date
Sebastiaan van Stijn
247f90c82e
pkg/system: move maxTime init() back to Chtimes code
This code was moved to a separate file in fe5b34ba88,
but it's unclear why it was moved (as this file is not excluded on Windows).

Moving the code back into the chtimes file, to move it closer to where it's used.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-07 18:13:05 +02:00
Sebastiaan van Stijn
c218211012
Merge pull request #44255 from thaJeztah/pkg_system_remove_GetExitCode
pkg/system: move GetExitCode() to pkg/idtools, and un-export
2022-10-07 18:10:03 +02:00
Sebastiaan van Stijn
e034b7b04d
Merge pull request #44253 from thaJeztah/pkg_sys_umask
pkg/system: remove Umask() utility
2022-10-07 17:25:52 +02:00
Samuel Karp
968a0bcd63
Merge pull request #43055 from thaJeztah/use_containerd_oci_devices_part2 2022-10-07 00:36:40 -07:00
Sebastiaan van Stijn
4347080b46
pkg/system: remove Umask() utility
It was only used in a couple of places, and in most places shouldn't be used
as those locations were in unix/linux-only files, so didn't need the wrapper.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-06 22:22:29 +02:00
Sebastiaan van Stijn
59c77c8f5b
Merge pull request #44250 from thaJeztah/fix_pkg_dir
pkg/directory: Size(): add back type-casts to account for platform differences
2022-10-06 21:44:46 +02:00
Sebastiaan van Stijn
1515e02c8a
Merge pull request #44215 from corhere/fix-unlockosthread-pdeathsig
Stop subprocesses from getting unexpectedly killed
2022-10-06 20:08:53 +02:00
Sebastiaan van Stijn
76ce3fd9c9
remove aliases for deprecated pkg/pubsub
The aliases are included in the 22 release branch, so we can remove them
from master.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-06 16:41:00 +02:00
tockn
89a9d7d650 fix typo
fix typo

Signed-off-by: Takuto Sato <tockn.jp@gmail.com>
2022-10-06 11:09:06 +09:00
Sebastiaan van Stijn
c1729f876c
remove aliases for deprecated pkg/fsutils
The aliases are included in the 22 release branch, so we can remove them
from master.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-06 02:51:24 +02:00
Sebastiaan van Stijn
ce2abb82c0
remove aliases for deprecated pkg/urlutil
The aliases are included in the 22 release branch, so we can remove them
from master.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-06 02:48:42 +02:00
Akihiro Suda
88c6ec40a4
Merge pull request #44258 from thaJeztah/bump_selinux
vendor: github.com/opencontainers/selinux v1.10.2
2022-10-06 07:36:12 +09:00
Sebastiaan van Stijn
a5e1baf3ab
vendor: github.com/opencontainers/selinux v1.10.2
full diff: https://github.com/opencontainers/selinux/compare/v1.10.1...v1.10.2

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 22:36:16 +02:00
Sebastiaan van Stijn
49940ab5ee
Merge pull request #44216 from cpuguy83/volume_unnamed_label
Volume prune: only prune anonymous volumes by default
2022-10-05 19:34:47 +02:00
Cory Snider
1f22b15030 Lock OS threads when exec'ing with Pdeathsig
On Linux, when (os/exec.Cmd).SysProcAttr.Pdeathsig is set, the signal
will be sent to the process when the OS thread on which cmd.Start() was
executed dies. The runtime terminates an OS thread when a goroutine
exits after being wired to the thread with runtime.LockOSThread(). If
other goroutines are allowed to be scheduled onto a thread which called
cmd.Start(), an unrelated goroutine could cause the thread to be
terminated and prematurely signal the command. See
https://github.com/golang/go/issues/27505 for more information.

Prevent started subprocesses with Pdeathsig from getting signaled
prematurely by wiring the starting goroutine to the OS thread until the
subprocess has exited. No other goroutines can be scheduled onto a
locked thread so it will remain alive until unlocked or the daemon
process exits.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2022-10-05 12:18:03 -04:00
Brian Goff
a8b20ed105
Merge pull request #44252 from thaJeztah/deprecate_pkg_fsutil
pkg/fsutils: deprecate in favor of containerd/continuity/fs
2022-10-05 08:37:21 -07:00
Sebastiaan van Stijn
ab677c41ea
pkg/system: unconvert
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 16:21:04 +02:00
Sebastiaan van Stijn
07b1aa822c
pkg/system: move GetExitCode() to pkg/idtools, and un-export
This utility was only used in a single place, and had no external consumers.
Move it to where it's used.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 16:20:33 +02:00
Sebastiaan van Stijn
5b6b42162b
pkg/fsutils: deprecate in favor of containerd/continuity/fs
The pkg/fsutils package was forked in containerd, and later moved to
containerd/continuity/fs. As we're moving more bits to containerd, let's also
use the same implementation to reduce code-duplication and to prevent them from
diverging.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 11:36:04 +02:00
Sebastiaan van Stijn
26659d5eb8
pkg/directory: remove unused MoveToSubdir() utility
This utility was added in 442b45628e as part of
user-namespaces, and first used in 44e1023a93 to
set up the daemon root, and move the existing content;
44e1023a93/daemon/daemon_experimental.go (L68-L71)

A later iteration no longer _moved_ the existing root directory, and removed the
use of `directory.MoveToSubdir()` e8532023f2

It looks like there's no external consumers of this utility, so we should be
save to remove it.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 11:12:11 +02:00
Sebastiaan van Stijn
bd6217bb74
pkg/directory: minor refactor of Size()
- separate exported function from implementation, to allow for GoDoc to be
  maintained in a single location.
- don't use named return variables (no "bare" return, and potentially shadowing
  variables)
- reverse the `os.IsNotExist(err) && d != dir` condition, putting  the "lighter"
  `d != dir` first.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 11:12:11 +02:00
Sebastiaan van Stijn
0a861e68df
pkg/directory: Size(): add back type-casts to account for platform differences
I noticed the comment above this code, but didn't see a corresponding type-cast.
Looking at this file's history, I found that these were removed as part of
2f5f0af3fd, which looks to have overlooked some
deliberate type-casts.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-05 10:58:47 +02:00
Sebastiaan van Stijn
109eafc3f8
Merge pull request #44244 from thaJeztah/api_update_swagger_for_builder_version
docs: swagger: update description for default builder version
2022-10-05 10:56:02 +02:00
Sebastiaan van Stijn
974e4540bd
Merge pull request #44243 from thaJeztah/libnetwork_cleanup_outdated_comments
libnetwork: remove some outdated comments
2022-10-05 10:55:34 +02:00
Samuel Karp
d502ef0035
Merge pull request #44246 from thaJeztah/bump_go_1.19.2 2022-10-05 00:29:01 -07:00
Samuel Karp
e4a6520d6e
Merge pull request #44241 from austinvazquez/update-awslogs-doc 2022-10-05 00:27:54 -07:00
Brian Goff
618f26ccbc Volume prune: only prune anonymous volumes by default
This adds a new filter argument to the volume prune endpoint "all".
When this is not set, or it is a false-y value, then only anonymous
volumes are considered for pruning.

When `all` is set to a truth-y value, you get the old behavior.

This is an API change, but I think one that is what most people would
want.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-04 20:55:13 +00:00
Sebastiaan van Stijn
7b4e4c08b5
Update to go 1.19.2 to address CVE-2022-2879, CVE-2022-2880, CVE-2022-41715
From the mailing list:

We have just released Go versions 1.19.2 and 1.18.7, minor point releases.

These minor releases include 3 security fixes following the security policy:

- archive/tar: unbounded memory consumption when reading headers

  Reader.Read did not set a limit on the maximum size of file headers.
  A maliciously crafted archive could cause Read to allocate unbounded
  amounts of memory, potentially causing resource exhaustion or panics.
  Reader.Read now limits the maximum size of header blocks to 1 MiB.

  Thanks to Adam Korczynski (ADA Logics) and OSS-Fuzz for reporting this issue.

  This is CVE-2022-2879 and Go issue https://go.dev/issue/54853.

- net/http/httputil: ReverseProxy should not forward unparseable query parameters

  Requests forwarded by ReverseProxy included the raw query parameters from the
  inbound request, including unparseable parameters rejected by net/http. This
  could permit query parameter smuggling when a Go proxy forwards a parameter
  with an unparseable value.

  ReverseProxy will now sanitize the query parameters in the forwarded query
  when the outbound request's Form field is set after the ReverseProxy.Director
  function returns, indicating that the proxy has parsed the query parameters.
  Proxies which do not parse query parameters continue to forward the original
  query parameters unchanged.

  Thanks to Gal Goldstein (Security Researcher, Oxeye) and
  Daniel Abeles (Head of Research, Oxeye) for reporting this issue.

  This is CVE-2022-2880 and Go issue https://go.dev/issue/54663.

- regexp/syntax: limit memory used by parsing regexps

  The parsed regexp representation is linear in the size of the input,
  but in some cases the constant factor can be as high as 40,000,
  making relatively small regexps consume much larger amounts of memory.

  Each regexp being parsed is now limited to a 256 MB memory footprint.
  Regular expressions whose representation would use more space than that
  are now rejected. Normal use of regular expressions is unaffected.

  Thanks to Adam Korczynski (ADA Logics) and OSS-Fuzz for reporting this issue.

  This is CVE-2022-41715 and Go issue https://go.dev/issue/55949.

View the release notes for more information: https://go.dev/doc/devel/release#go1.19.2

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-04 20:41:45 +02:00
Sebastiaan van Stijn
271243d382
docs: swagger: update description for default builder version
Commit 7b153b9e28 updated the main
swagger file, but didn't update the v1.42 version used for the
documentation as it wasn't created yet at the time.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-04 18:58:18 +02:00
Sebastiaan van Stijn
c523d6d25c
libnetwork: remove some outdated comments
The corresponding "nolint" comments were removed in 2f1c382a6d,
but didn't remove these comments.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-04 15:34:39 +02:00
Austin Vazquez
6f435e0bb9 Update awslogs driver batching documentation.
Before this change, the awslogs collectBatch and processEvent
function documentation still referenced the batchPublishFrequency
constant which was removed in favor of the configurable log stream
forceFlushInterval member.

Signed-off-by: Austin Vazquez <macedonv@amazon.com>
2022-10-03 23:37:14 +00:00
Sebastiaan van Stijn
6c1df4f9c5
Merge pull request #43973 from thaJeztah/containerd_less_panics
containerd-integration: prefer error over panic where possible
2022-10-03 23:28:22 +02:00
Brian Goff
5607c4be00
Merge pull request #44231 from cpuguy83/fix_restore_volumerefs
Fix live-restore w/ restart policies + volume refs
2022-10-03 10:35:26 -07:00
Sebastiaan van Stijn
b14d203884
Merge pull request #44233 from thaJeztah/libnetwork_linting
libnetwork: fix some (linting) issues
2022-10-03 11:02:59 +02:00
Sebastiaan van Stijn
60ace31be0
libnetwork: sandbox.updateDNS(): use const for file permissions
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-02 01:28:05 +02:00
Sebastiaan van Stijn
f0be4d126d
libnetwork: use object-literal for some structs
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-02 01:26:15 +02:00
Sebastiaan van Stijn
50a7c67363
libnetwork: fix some whitespace formatting
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-02 01:26:14 +02:00
Sebastiaan van Stijn
481185fb8a
libnetwork/osl: fix GoDoc formatting
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-10-02 01:26:14 +02:00
Sebastiaan van Stijn
f8c7eb295f
Merge pull request #44226 from thaJeztah/migrate_filematcher
replace pkg/fileutils Matching funcs with github.com/moby/patternmatcher
2022-10-01 00:32:51 +02:00
Brian Goff
4c0e0979b4 Fix live-restore w/ restart policies + volume refs
Before this change restarting the daemon in live-restore with running
containers + a restart policy meant that volume refs were not restored.
This specifically happens when the container is still running *and*
there is a restart policy that would make sure the container was running
again on restart.

The bug allows volumes to be removed even though containers are
referencing them. 😱

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2022-09-30 22:30:58 +00:00
Sebastiaan van Stijn
3c69b9f2c5
replace pkg/fileutils Matching funcs with github.com/moby/patternmatcher
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-30 23:25:28 +02:00
Sebastiaan van Stijn
62bc40c6e7
Merge pull request #44221 from thaJeztah/migrate_pubsub
migrate pkg/pubsub to github.com/moby/pubsub
2022-09-30 22:30:49 +02:00
Sebastiaan van Stijn
a392e6cecb
Merge pull request #44223 from thaJeztah/fileutils_cleanup_tests
pkg/fileutils: remove gotest.tools as dependency, use t.TempDir()
2022-09-30 20:21:23 +02:00
Sebastiaan van Stijn
0249afc523
migrate pkg/pubsub to github.com/moby/pubsub
This package was moved to a separate repository, using the steps below:

    # install filter-repo (https://github.com/newren/git-filter-repo/blob/main/INSTALL.md)
    brew install git-filter-repo

    cd ~/projects

    # create a temporary clone of docker
    git clone https://github.com/docker/docker.git moby_pubsub_temp
    cd moby_pubsub_temp

    # for reference
    git rev-parse HEAD
    # --> 572ca799db

    # remove all code, except for pkg/pubsub, license, and notice, and rename pkg/pubsub to /
    git filter-repo --path pkg/pubsub/ --path LICENSE --path NOTICE --path-rename pkg/pubsub/:

    # remove canonical imports
    git revert -s -S 585ff0ebbe6bc25b801a0e0087dd5353099cb72e

    # initialize module
    go mod init github.com/moby/pubsub
    go mod tidy

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-30 18:40:19 +02:00
Brian Goff
02ee154558
Merge pull request #44208 from thaJeztah/container_cleanup_package_vars
daemon: replaced exported errors with errdefs
2022-09-30 09:23:36 -07:00
Sebastiaan van Stijn
0440ca07ba
pkg/fileutils: remove gotest.tools as dependency, use t.TempDir()
In preparation of moving this package separate.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-30 17:14:38 +02:00
Sebastiaan van Stijn
f73d72bfdc
pkg: replace some README's with GoDoc package descriptions
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-30 17:11:37 +02:00
Sebastiaan van Stijn
b44b3193d0
oci.DevicesFromPath() switch to use containerd implementation
Reducing the amount of code used from runc/libcontainer

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-09-29 10:40:30 +02:00
Sebastiaan van Stijn
572ca799db
Merge pull request #44213 from thaJeztah/more_robust_rootless
contrib: make dockerd-rootless-setuptool.sh more robust
2022-09-29 10:31:53 +02:00
Cory Snider
c3a6de9ec8 logger/journald: unlock OS threads
Managed containerd processes are executed with SysProcAttr.Pdeathsig set
to syscall.SIGKILL so that the managed containerd is automatically
killed along with the daemon. At least, that is the intention. In
practice, the signal is sent to the process when the creating _OS
thread_ dies! If a goroutine exits while locked to an OS thread, the Go
runtime will terminate the thread. If that thread happens to be the
same thread which the subprocess was started from, the subprocess will
be signaled. Prevent the journald driver from sometimes unintentionally
killing child processes by ensuring that all runtime.LockOSThread()
calls are paired with runtime.UnlockOSThread().

Signed-off-by: Cory Snider <csnider@mirantis.com>
2022-09-28 11:46:59 -04:00