Compare commits

..

No commits in common. "e6ce785d611702532ae71547e78fbb49eff3aded" and "7d7c75f1491350cedaed40358fe8c834705706f0" have entirely different histories.

26 changed files with 46 additions and 82 deletions

View File

@ -103,7 +103,7 @@ for args in "${ARGS[@]}"; do
SECONDS=0
info "Checking build with $args"
if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror $args build; then
if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true --werror $args build; then
fatal "meson failed with $args"
fi

23
NEWS
View File

@ -462,30 +462,15 @@ CHANGES WITH 247 in spe:
via the new Independent= boolean setting.
* systemd-networkd's Gateway= setting in .network files now accepts the
special values "_dhcp4" and "_ipv6ra" to configure additional,
locally defined, explicit routes to the gateway acquired via DHCP or
IPv6 Router Advertisements. The old setting "_dhcp" is deprecated,
but still accepted for backwards compatibility.
special values _dhcp4 and _ipv6ra to configure additional, locally
defined, explicit routes to the gateway acquired via DHCP or IPv6
Router Advertisements.
* systemd-networkd's [IPv6PrefixDelegation] section and
IPv6PrefixDelegation= options have been renamed as [IPv6SendRA] and
IPv6SendRA= (the old names are still accepted for backwards
compatibility).
* systemd-networkd's .network files gained the DHCPv6PrefixDelegation=
boolean setting in [Network] section. If enabled, the delegated prefix
gained by another link will be configured, and an address within the
prefix will be assigned.
* systemd-networkd's .network files gained the Announce= boolean setting
in [DHCPv6PrefixDelegation] section. When enabled, the delegated
prefix will be announced through IPv6 router advertisement (IPv6 RA).
The setting is enabled by default.
* systemd-networkd's .netdev files gained the Independent= boolean
setting in [VXLAN] section. When enabled, the vxlan interface will be
created without underlying interfaces. Defaults to false.
* systemctl gained support for two new verbs: "service-log-level" and
"service-log-target" may be used on services that implement the
generic org.freedesktop.LogControl1 D-Bus interface to dynamically
@ -551,7 +536,7 @@ CHANGES WITH 247 in spe:
promises.
* A new helper oomctl has been added to introspect systemd-oomd state.
It is only enabled by default in developer mode and should be
If also is only enabled by default in developer mode and should be
considered a preview without the usual backwards-compatibility
promises.

2
TODO
View File

@ -646,7 +646,7 @@ Features:
parameters
* maybe hook of xfs/ext4 quotactl() with services? i.e. automatically manage
the quota of the user indicated in User= via unit file settings, like the
the quota of a the user indicated in User= via unit file settings, like the
other resource management concepts. Would mix nicely with DynamicUser=1. Or
alternatively, do this with projids, so that we can also cover services
running as root. Quota should probably cover all the special dirs such as

View File

@ -926,7 +926,6 @@ evdev:input:b0003v046Dp00*
KEYBOARD_KEY_c1029=shuffle # Shuffle button
KEYBOARD_KEY_c102a=back # Back button
KEYBOARD_KEY_c102b=cyclewindows # Empty window icon
KEYBOARD_KEY_c102c=fn # Fn key
KEYBOARD_KEY_c102d=www # www text + magnifierglass icon
KEYBOARD_KEY_c1031=connect # Pickup phone button → connect → XF86Go
KEYBOARD_KEY_c1032=cancel # Hangup phone button → cancel → Cancel
@ -1029,7 +1028,6 @@ evdev:input:b0003v046Dp00FE*
# MX5000 keyboard (HID proxy mode and bluetooth matches)
evdev:input:b0003v046DpB305*
evdev:input:b0005v046DpB305*
KEYBOARD_KEY_c0183=media # HUT says config, kbd says Media
KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
KEYBOARD_KEY_c1004=send # Send and receive / sync button
KEYBOARD_KEY_c1006=coffee # Status (online/away) button
@ -1042,25 +1040,13 @@ evdev:input:b0005v046DpB305*
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
KEYBOARD_KEY_c1040=fn_esc # Fn mode on/off toggle
# Dinovo Edge (HID proxy mode and bluetooth matches)
evdev:input:b0003v046DpB309*
evdev:input:b0005v046DpB309*
KEYBOARD_KEY_c102c=fn # Fn key
KEYBOARD_KEY_c1038=prog1 # Fn + F9 Smartkey A → XF86Launch1
KEYBOARD_KEY_c1039=prog2 # Fn + F10 Smartkey B → XF86Launch2
KEYBOARD_KEY_c103a=prog3 # Fn + F11 Smartkey C → XF86Launch3
KEYBOARD_KEY_c103b=prog4 # Fn + F12 Smartkey D → XF86Launch4
KEYBOARD_KEY_c1050=phone # Fn + F1 Phone button
# MX5500 keyboard (HID proxy mode and bluetooth matches)
evdev:input:b0003v046DpB30B*
evdev:input:b0005v046DpB30B*
KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
KEYBOARD_KEY_c100f=config # Window with gear icon
KEYBOARD_KEY_c102c=fn # Fn key
KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
KEYBOARD_KEY_c100f=config # Window with gear icon
KEYBOARD_KEY_c1038=prog1 # Smartkey A → XF86Launch1
KEYBOARD_KEY_c1039=prog2 # Smartkey B → XF86Launch2
KEYBOARD_KEY_c103a=prog3 # Smartkey C → XF86Launch3

View File

@ -292,13 +292,11 @@
attached to the request object path, interface and member. Finally, the property callbacks
attached to the request object path, interface and member are called. If the final callback
returns zero, an error reply is sent back to the caller indicating no matching object for the
request was found.</para>
<para>Note that you can return a positive integer from a callback without
request was found. Note that you can return a positive integer from a callback without
immediately sending a reply. This informs sd-bus this callback will take responsibility for
replying to the request without forcing the callback to produce a reply immediately. This allows
a callback to perform any number of asynchronous operations required to construct a reply.
However, if producing a reply takes too long, the method call will time out at the caller.</para>
a callback to perform any number of asynchronous operations required to construct a reply. Note
that if producing a reply takes too long, the method call will time out at the caller.</para>
<para>If a callback was invoked to handle a request that expects a reply and the callback
returns a negative value, the value is interpreted as a negative errno-style error code and sent
@ -371,8 +369,8 @@
with the message the callback was invoked with. Parameter <replaceable>flags</replaceable> is a
combination of flags, see below.</para>
<para><constant>SD_BUS_METHOD_WITH_ARGS()</constant> is a shorthand for calling
<constant>SD_BUS_METHOD_WITH_ARGS_OFFSET()</constant> with an offset of zero.</para>
<constant>SD_BUS_METHOD_WITH_ARGS()</constant> is a shorthand for calling
<constant>SD_BUS_METHOD_WITH_ARGS_OFFSET()</constant> with an offset of zero.
</listitem>
</varlistentry>
@ -406,7 +404,7 @@
<varlistentry>
<term><constant>SD_BUS_SIGNAL_WITH_ARGS()</constant></term>
<listitem><para>Declare a D-Bus signal with the name <replaceable>member</replaceable> and
<listitem><para>>Declare a D-Bus signal with the name <replaceable>member</replaceable> and
arguments <replaceable>args</replaceable>. <replaceable>args</replaceable> expects a sequence of
argument type/name pairs wrapped in the <constant>SD_BUS_ARGS()</constant> macro. The elements at
even indices in this list describe the types of the signal's arguments. The signal's parameter

View File

@ -89,12 +89,6 @@
input parameter; it can be used to propagate errors from the callback handler, it will not receive any
error that was received as method reply.)</para>
<para>The message <parameter>m</parameter> passed to the callback is only borrowed, that is, the callback should
not call <citerefentry><refentrytitle>sd_bus_message_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>
on it. If the callback wants to hold on to the message beyond the lifetime of the callback, it needs to call
<citerefentry><refentrytitle>sd_bus_message_ref</refentrytitle><manvolnum>3</manvolnum></citerefentry> to create a
new reference.</para>
<para>If <parameter>usec</parameter> is zero, the default D-Bus method call timeout is used. See
<citerefentry><refentrytitle>sd_bus_get_method_call_timeout</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para>

View File

@ -44,7 +44,6 @@
<funcprototype>
<funcdef>int <function>sd_bus_message_peek_type</function></funcdef>
<paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
<paramdef>char *<parameter>type</parameter></paramdef>
<paramdef>const char **<parameter>contents</parameter></paramdef>
</funcprototype>

View File

@ -59,7 +59,7 @@
message is no longer needed. If <parameter>ret</parameter> is not <constant>NULL</constant>, progress was made, but no message was
processed, <parameter>*ret</parameter> is set to <constant>NULL</constant>.</para>
<para>If the bus object is connected to an
<para>If a the bus object is connected to an
<citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry> event loop (with
<citerefentry><refentrytitle>sd_bus_attach_event</refentrytitle><manvolnum>3</manvolnum></citerefentry>), it is not
necessary to call <function>sd_bus_process()</function> directly as it is invoked automatically when

View File

@ -825,7 +825,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
configured on another link. By default, an address within each delegated prefix will be
assigned, and the prefixes will be announced through IPv6 Router Advertisement when
<varname>IPv6SendRA=</varname> is enabled. Such default settings can be configured in
[DHCPv6PrefixDelegation] section. Defaults to disabled.</para></listitem>
[DHCPv6PrefixDelegation] section.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>IPv6MTUBytes=</varname></term>
@ -1170,9 +1170,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<varlistentry>
<term><varname>FirewallMark=</varname></term>
<listitem>
<para>Specifies the iptables firewall mark value to match (a number between 1 and
4294967295). Optionally, the firewall mask (also a number between 1 and 4294967295) can be
suffixed with a slash (<literal>/</literal>), e.g., <literal>7/255</literal>.</para>
<para>Specifies the iptables firewall mark value to match (a number between 1 and 4294967295).</para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -132,7 +132,7 @@
<para>The string can be prefixed with a lowercase e (e"string\n") to mark the string as
<ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style escaped</ulink>.
For example, e"string\n" is parsed as 7 characters: 6 lowercase letters and a newline.
This can be useful for writing special characters when a kernel driver requires them.</para>
This can be useful for writting special characters when a kernel driver requires them.</para>
<para>Please note that <constant>NUL</constant> is not allowed in either string variant.</para>
</refsect2>

View File

@ -3438,7 +3438,7 @@ endif
fuzzer_exes = []
if fuzz_tests or fuzzer_build
if get_option('tests') != 'false'
foreach tuple : fuzzers
sources = tuple[0]
link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
@ -3560,7 +3560,7 @@ foreach tuple : sanitizers
if name != prev
if want_tests == 'false'
message('Not compiling @0@ because tests is set to false'.format(name))
elif fuzz_tests
elif slow_tests or fuzz_tests
exe = custom_target(
name,
output : name,
@ -3570,12 +3570,12 @@ foreach tuple : sanitizers
'@OUTPUT@'],
build_by_default : true)
else
message('Not compiling @0@ because fuzz-tests is set to false'.format(name))
message('Not compiling @0@ because slow-tests/fuzz-tests is set to false'.format(name))
endif
endif
prev = name
if fuzz_tests
if want_tests != 'false' and (slow_tests or fuzz_tests)
test('@0@:@1@:@2@'.format(b, c, sanitizer),
env,
env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],

View File

@ -86,7 +86,7 @@ EOF
# disable autopkgtests which are not for upstream
sed -i '/# NOUPSTREAM/ q' debian/tests/control
# enable more unit tests
sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dfuzz-tests=true -Dman=true /' debian/rules
sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dman=true /' debian/rules
# no orig tarball
echo '1.0' > debian/source/format

View File

@ -1875,8 +1875,9 @@ int cg_mask_supported(CGroupMask *ret) {
if (r > 0) {
_cleanup_free_ char *root = NULL, *controllers = NULL, *path = NULL;
/* In the unified hierarchy we can read the supported and accessible controllers from
* the top-level cgroup attribute */
/* In the unified hierarchy we can read the supported
* and accessible controllers from a the top-level
* cgroup attribute */
r = cg_get_root_path(&root);
if (r < 0)

View File

@ -810,7 +810,7 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
*
* 3. With CHASE_STEP: in this case only a single step of the normalization is executed, i.e. only the first
* symlink or ".." component of the path is resolved, and the resulting path is returned. This is useful if
* a caller wants to trace the path through the file system verbosely. Returns < 0 on error, > 0 if the
* a caller wants to trace the a path through the file system verbosely. Returns < 0 on error, > 0 if the
* path is fully normalized, and == 0 for each normalization step. This may be combined with
* CHASE_NONEXISTENT, in which case 1 is returned when a component is not found.
*

View File

@ -104,6 +104,10 @@ static void test_oomd_cgroup_context_acquire_and_insert(void) {
assert_se(oomd_cgroup_context_acquire(cgroup, &ctx) == 0);
assert_se(streq(ctx->path, cgroup));
assert_se(ctx->memory_pressure.avg10 == 0);
assert_se(ctx->memory_pressure.avg60 == 0);
assert_se(ctx->memory_pressure.avg300 == 0);
assert_se(ctx->memory_pressure.total == 0);
assert_se(ctx->current_memory_usage > 0);
assert_se(ctx->memory_min == 0);
assert_se(ctx->memory_low == 0);

View File

@ -1380,7 +1380,7 @@ static int nsec3_hashed_domain_make(DnsResourceRecord *nsec3, const char *domain
* matches the wildcard domain.
*
* Based on this we can prove either the existence of the record in @key, or NXDOMAIN or NODATA, or
* that there is no proof either way. The latter is the case if a proof of non-existence of a given
* that there is no proof either way. The latter is the case if a the proof of non-existence of a given
* name uses an NSEC3 record with the opt-out bit set. Lastly, if we are given insufficient NSEC3 records
* to conclude anything we indicate this by returning NO_RR. */
static int dnssec_test_nsec3(DnsAnswer *answer, DnsResourceKey *key, DnssecNsecResult *result, bool *authenticated, uint32_t *ttl) {

View File

@ -2117,7 +2117,7 @@ int dns_transaction_request_dnssec_keys(DnsTransaction *t) {
return r;
if (r == 0) {
/* Hmm, so this SOA RR doesn't match our original question. In this case, maybe this is
* a negative reply, and we need the SOA RR's TTL in order to cache a negative entry?
* a negative reply, and we need the a SOA RR's TTL in order to cache a negative entry?
* If so, we need to validate it, too. */
r = dns_answer_match_key(t->answer, t->key, NULL);

View File

@ -35,7 +35,7 @@ typedef enum ConfigParseFlags {
/* Prototype for a parser for a specific configuration setting */
typedef int (*ConfigParserCallback)(CONFIG_PARSER_ARGUMENTS);
/* A macro declaring a function prototype, following the typedef above, simply because it's so cumbersomely long
/* A macro declaring the a function prototype, following the typedef above, simply because it's so cumbersomely long
* otherwise. (And current emacs gets irritatingly slow when editing files that contain lots of very long function
* prototypes on the same screen) */
#define CONFIG_PARSER_PROTOTYPE(name) int name(CONFIG_PARSER_ARGUMENTS)

View File

@ -2062,7 +2062,7 @@ bool user_record_compatible(UserRecord *a, UserRecord *b) {
assert(a);
assert(b);
/* If either lacks the regular section, we can't really decide, let's hence say they are
/* If either lacks a the regular section, we can't really decide, let's hence say they are
* incompatible. */
if (!(a->mask & b->mask & USER_RECORD_REGULAR))
return false;

View File

@ -90,7 +90,6 @@ static int get_unit_list_recursive(
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
_cleanup_(table_unrefp) Table *table = NULL;
unsigned job_count = 0;
int r;
table = table_new("", "unit", "load", "active", "sub", "job", "description");
@ -109,6 +108,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
(void) table_set_empty_string(table, "-");
int job_count = 0;
for (const UnitInfo *u = unit_infos; unit_infos && u < unit_infos + c; u++) {
_cleanup_free_ char *j = NULL;
const char *on_underline = "", *on_loaded = "", *on_active = "";
@ -156,7 +156,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
TABLE_STRING, u->sub_state,
TABLE_SET_BOTH_COLORS, on_active,
TABLE_STRING, u->job_id ? u->job_type: "",
TABLE_SET_BOTH_COLORS, on_underline,
TABLE_SET_BOTH_COLORS, u->job_id ? on_underline : "",
TABLE_STRING, u->description,
TABLE_SET_BOTH_COLORS, on_underline);
if (r < 0)
@ -186,8 +186,7 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
"LOAD = Reflects whether the unit definition was properly loaded.\n"
"ACTIVE = The high-level unit activation state, i.e. generalization of SUB.\n"
"SUB = The low-level unit activation state, values depend on unit type.");
if (job_count > 0)
puts("JOB = Pending job for the unit.\n");
puts(job_count ? "JOB = Pending job for the unit.\n" : "");
on = ansi_highlight();
off = ansi_normal();
} else {

View File

@ -58,10 +58,10 @@ if add_languages('cpp', required : false)
opts += [['c++'],
['c++', '-std=c++98'],
['c++', '-std=c++11']]
if cxx.has_argument('-std=c++14')
if cc.has_argument('-std=c++14')
opts += [['c++', '-std=c++14']]
endif
if cxx.has_argument('-std=c++17')
if cc.has_argument('-std=c++17')
opts += [['c++', '-std=c++17']]
endif
endif

View File

@ -960,7 +960,7 @@ static int copy_all_tags(sd_device *d, sd_device *s) {
if (!s)
return 0;
FOREACH_DEVICE_TAG(s, tag) {
for (tag = sd_device_get_tag_first(s); tag; tag = sd_device_get_tag_next(s)) {
r = device_add_tag(d, tag, false);
if (r < 0)
return r;

View File

@ -15,7 +15,7 @@ sanitize_address_undefined = custom_target(
project_source_root,
'@OUTPUT@',
'fuzzers',
'-Dfuzz-tests=true -Db_lundef=false -Db_sanitize=address,undefined @0@'.format(optimization),
'-Db_lundef=false -Db_sanitize=address,undefined @0@'.format(optimization),
' '.join(cc.cmd_array()),
cxx_cmd])

View File

@ -415,7 +415,7 @@ KERNEL=="ttyACM0", SYMLINK+="modem"
EOF
},
{
desc => "substitution of sysfs value (%s{file})",
desc => "sustitution of sysfs value (%s{file})",
devices => [
{
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",

View File

@ -61,7 +61,7 @@ for phase in "${PHASES[@]}"; do
ENV_VARS="-e CC=clang -e CXX=clang++"
MESON_ARGS="--optimization=1"
fi
docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dsplit-usr=true -Dman=true $MESON_ARGS build
docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dsplit-usr=true -Dman=true $MESON_ARGS build
$DOCKER_EXEC ninja -v -C build
docker exec -e "TRAVIS=$TRAVIS" -it $CONT_NAME ninja -C build test
;;

View File

@ -83,12 +83,12 @@ for phase in "${PHASES[@]}"; do
RUN)
info "Run phase"
# Build systemd
$DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true build
$DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true build
$DOCKER_EXEC ninja -v -C build
$DOCKER_EXEC ninja -C build test
;;
RUN_CLANG)
docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true -Dman=true build
docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dman=true build
$DOCKER_EXEC ninja -v -C build
$DOCKER_EXEC ninja -C build test
;;