Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: syncthing/syncthing
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.0.15
Choose a base ref
...
head repository: syncthing/syncthing
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.0.16
Choose a head ref
  • 11 commits
  • 34 files changed
  • 4 contributors

Commits on Feb 12, 2026

  1. chore(config, connections): use same reconnection interval for QUIC a…

    …nd TCP (fixes #10507) (#10573)
    
    Signed-off-by: Marcus B Spencer <marcus@marcusspencer.us>
    marbens-arch authored Feb 12, 2026
    Configuration menu
    Copy the full SHA
    75dd940 View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2026

  1. Configuration menu
    Copy the full SHA
    ddafc5f View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2026

  1. Configuration menu
    Copy the full SHA
    76db7c6 View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2026

  1. Configuration menu
    Copy the full SHA
    55d89d0 View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2026

  1. chore: trigger rebuild

    calmh committed Mar 3, 2026
    Configuration menu
    Copy the full SHA
    9c7e34b View commit details
    Browse the repository at this point in the history

Commits on Mar 4, 2026

  1. build(deps): update dependencies (#10588)

    Signed-off-by: Jakob Borg <jakob@kastelo.net>
    calmh authored Mar 4, 2026
    Configuration menu
    Copy the full SHA
    8c7c413 View commit details
    Browse the repository at this point in the history

Commits on Mar 7, 2026

  1. Configuration menu
    Copy the full SHA
    fd12982 View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2026

  1. Configuration menu
    Copy the full SHA
    55d3b7c View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2026

  1. fix(systemd): support overrides for syncOwnership (#10602)

    Syncthing docs in https://docs.syncthing.net/users/autostart.html#permissions
    tell the user to set `AmbientCapabilities=CAP_CHOWN CAP_FOWNER` if the
    user wishes to use the `syncOwnership` option.
    
    #10421 broke `syncOwnership`
    for users that followed that advice because the PR introduced
    `CapabilityBoundingSet=` which cancels out any additional capabilities
    granted with `AmbientCapabilities`.
    
    (`AmbientCapabilities` _adds_ capabilities; `CapabilityBoundingSet`
    _limits_ maximum capabilities to the specified set. Setting
    `CapabilityBoundingSet` to an empty list prevents any capabilities from
    being acquired in any way.)
    
    This PR fixes the breakage by explicitly setting
    
        CapabilityBoundingSet=CAP_CHOWN CAP_FOWNER
    
    This does _not_ grant any additional access rights to syncthing if the
    user is not explicitly setting `AmbientCapabilities` as well, but it
    does loosen the sandbox _a bit_. An attacker compromising the syncthing
    process could now more easily expand their access to include
    CAP_CHOWN/CAP_FOWNER even if the user is not setting
    `AmbientCapabilities`.
    
    Signed-off-by: Val Markovic <val@markovic.io>
    Valloric authored Mar 11, 2026
    Configuration menu
    Copy the full SHA
    c4ff02d View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2026

  1. fix(systemd): add back chown allowed syscalls (#10605)

    fix(systemd): Add back chown allowed syscalls
    
    IFF the user enables the `syncOwnership` feature AND sets
    `AmbientCapabilities=CAP_CHOWN CAP_FOWNER` as the docs in
    https://docs.syncthing.net/users/autostart.html#permissions state,
    THEN syncthing needs to use the `chown` syscall.
    
    PR #10421 added a comprehensive sandbox that breaks `syncOwnership`.
    In PR #10602 we fixed one part, which is expanding the default
    `CapabilityBoundingSet` (see the PR for details).
    
    But there's a very subtle bug that this PR fixes. PR #10421 sets the
    following properties:
    
        SystemCallFilter=@System-service
        SystemCallFilter=~@PRIVILEGED io_uring_enter io_uring_register io_uring_setup
    
    (Systemd merges `SystemCallFilter` values; we had to set the property
    twice because to negate syscalls, the whole list has to start with `~`.)
    
    The goal was to allow all syscalls in the `@system-service` set, BUT
    disallow any `@privileged` syscalls and the `io_uring*` syscalls.
    
    But the sets are not disjoint; `chown` is in both `@system-service` and
    in `@privileged`, so it is removed from the allow list by the second
    property value.
    
    This property is also parsed in a very peculiar way. From systemd docs:
    
    > If you specify both types of this option (i.e. allow-listing and
    > deny-listing), the first encountered will take precedence and will
    > dictate the default action (termination or approval of a system call).
    > Then the next occurrences of this option will add or delete the listed
    > system calls from the set of the filtered system calls, depending of its
    > type and the default action. (For example, if you have started with an
    > allow list rule for read() and write(), and right after it add a deny
    > list rule for write(), then write() will be removed from the set.)
    
    Not only does the order of `SystemCallFilter` properties matter (later
    ones can undo effects of prior ones), but the _type_ of the _first_
    property sets the overall behavior of the syscall filter: if the first
    `SystemCallFilter` value is an allow list, then all syscalls that are
    not specified are disallowed by default (and reverse if the first value
    is a deny list).
    
    Of course, this is completely different from how other allow/deny lists
    are implemented in systemd; for example, `IPAddress[Allow|Deny]`
    properties don't work like this at all. >:(
    
    Since this complexity has bit us once, we're removing the additional
    deny list of syscalls and sticking with just
    `SystemCallFilter=@system-service`.
    
    This leaves some privileged syscalls in the allow list. Other options
    would require entering the "deny list by default" mode and deny lists
    are less secure than allow lists in general because they have to be
    maintained (the kernel always adds new syscalls). The rest of the
    sandbox (capability bounds) should be sufficient.
    
    Fixes #10603
    
    Signed-off-by: Val Markovic <val@markovic.io>
    Valloric authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    077a7a0 View commit details
    Browse the repository at this point in the history
  2. chore(sqlite): reduce max open connections, keep them open permanently (

    fixes #10592) (#10596)
    
    chore(sqlite): reduce max open connections, keep them open permanently (fixes #10592)
    
    Reduces connection churn, possibly tickling concurrency bug on Windows.
    
    Signed-off-by: Jakob Borg <jakob@kastelo.net>
    calmh authored Mar 13, 2026
    Configuration menu
    Copy the full SHA
    9ffce6e View commit details
    Browse the repository at this point in the history
Loading