Commit graph

30503 commits

Author SHA1 Message Date
Yu Watanabe ded71ab3bc core/socket: use fd_set_{rcv,snd}buf() 2020-09-09 06:39:05 +09:00
Yu Watanabe 2807a79424 sd-device-monitor: use fd_set_rcvbuf() 2020-09-09 06:39:05 +09:00
Yu Watanabe d9d9b2a0ae util: introduce fd_set_{snd,rcv}buf() 2020-09-09 06:39:05 +09:00
Yu Watanabe b92f350789 util: try to set with SO_{RCV,SND}BUFFORCE when requested size is larger than the kernel limit
The commit 10ce2e0681 inverts the order of
SO_{RCV,SND}BUFFORCE and SO_{RCV,SND}BUF. However, setting buffer size with
SO_{RCV,SND}BUF does not fail even if the requested size is larger than
the kernel limit. Hence, SO_{RCV,SND}BUFFORCE will not use anymore and
the buffer size is always limited by the kernel limit even if we have
the priviledge to ignore the limit.

This makes the buffer size is checked after configuring it with
SO_{RCV,SND}BUF, and if it is still not sufficient, then try to set it
with FORCE command. With this commit, if we have enough priviledge, the
requested buffer size is correctly set.

Hopefully fixes #14417.
2020-09-09 06:39:05 +09:00
Yu Watanabe 1263c85ef3 util: refuse to set too large value for socket buffer size 2020-09-09 06:39:05 +09:00
Yu Watanabe 8c63924c8d network: ignore error on increasing netlink receive buffer size 2020-09-09 06:39:05 +09:00
Lennart Poettering a1447e77a7
Merge pull request #16973 from poettering/btrfs-dev-root
print friendly error message if btrfs tells us /dev/root was backing block device of root fs
2020-09-08 19:55:12 +02:00
Lennart Poettering f3f4abad29
Merge pull request #16979 from keszybz/return-log-debug
Fix 'return log_error()' and 'return log_warning()' patterns
2020-09-08 19:54:38 +02:00
Michal Sekletár 9a1e90aee5 cgroup: freezer action must be NOP when cgroup v2 freezer is not available
Low-level cgroup freezer state manipulation is invoked directly from the
job engine when we are about to execute the job in order to make sure
the unit is not frozen and job execution is not blocked because of
that.

Currently with cgroup v1 we would needlessly do a bunch of work in the
function and even falsely update the freezer state. Don't do any of this
and skip the function silently when v2 freezer is not available.

Following bug is fixed by this commit,

$ systemd-run --unit foo.service /bin/sleep infinity
$ systemctl restart foo.service
$ systemctl show -p FreezerState foo.service

Before (cgroup v1, i.e. full "legacy" mode):
FreezerState=thawing

After:
FreezerState=running
2020-09-08 19:54:13 +02:00
Lennart Poettering 0354029bf5 resolved: don't store udp/tcp fd in DnsPacket object
DnsPacket should better be a "dead" object, i.e. list facts, not track
resources. By including an fd in its fields it started tracking
resources however, without actually taking a ref to the fd (i.e. no
dup() or so was called on it).

Let's hence rework things so that we don#t have to keep track of the fd
a packet came in from. Instead, pass around the DnsStubListenerExtra
object wherever we need to.

This should be useful as soon as we start caching whole DnsPacket
objects to allow replying to DNSSEC/CO packets, i.e. where we have to
keep a copy of the original DnsPacket around for a long time in cache,
potentially much longer than the fds the packet was received on.
2020-09-08 19:47:30 +02:00
Lennart Poettering ae8f0ec323 resolved: move dns stub definitions to resolved-dns-stub.[ch]
Just some moving around, no logic changes.
2020-09-08 19:47:25 +02:00
Lennart Poettering 36aaabc35e resolve: DNSStubListenerExtra → DnsStubListenerExtra
All our other struct types use the "Dns" spelling, rather than "DNS". Do
the same for this struct.
2020-09-08 19:47:19 +02:00
Yu Watanabe d157714b68 network: make log_link_error() or friends return void 2020-09-09 02:34:38 +09:00
Yu Watanabe 8ed6f81ba3 core: make log_unit_error() or friends return void 2020-09-09 02:34:38 +09:00
Yu Watanabe 93c5b90459 core/slice: explicitly specify return value 2020-09-09 02:34:38 +09:00
Yu Watanabe 38104ee2a5 udev: do not discard const qualifier 2020-09-09 02:34:38 +09:00
Yu Watanabe ab54f12b78 sd-device: make log_device_error() or friends return void 2020-09-09 02:34:38 +09:00
Yu Watanabe 09c69ecaeb udev: explicitly specify return value 2020-09-09 02:34:38 +09:00
Yu Watanabe a718b951ac udev: return negative errno for invalid EVDEV_ABS_XXX= property 2020-09-09 02:34:38 +09:00
Yu Watanabe 3b4e123173 udev: make log_rule_error() or friends return void 2020-09-09 02:34:38 +09:00
Lennart Poettering c6552f7cd5
Merge pull request #16955 from keszybz/test-execute-cleanup
One patch for test-execute and assorted cleanups
2020-09-08 18:33:12 +02:00
Lennart Poettering d161680e7a tree-wide: if get_block_device() returns zero devno, check for it in all cases
And add a comment for the existing cases where things aren't clear
already.
2020-09-08 18:10:26 +02:00
Lennart Poettering 67f0ac8c79 btrfs: if BTRFS_IOC_DEV_INFO returns /dev/root generate a friendly error message
On systems that boot without initrd on a btrfs root file systems the
BTRFS_IOC_DEV_INFO ioctl returns /dev/root as backing device. That
sucks, since that is not a real device visible to userspace.

Since this has been that way since forever, and it doesn't look like the
kernel will get fixed soon for this, let's at least generate a useful
error message in this case.

This is not a bug fix, just a tweak to make this more recognizable.

Once the kernel gets fixed to report the correct device nodes in this
case, in a way userspace can make sense of them things will magically
work for systemd, too.

(Note that this doesn't add a log message about this to really all cases
we call get_device() in, but just the main ones that are called in early
boot context, after all all there's no benefit in seeing this message
too many times.)

https://github.com/systemd/systemd/issues/16953
https://bugs.freedesktop.org/show_bug.cgi?id=84689
https://bugzilla.kernel.org/show_bug.cgi?id=89721
2020-09-08 18:10:26 +02:00
Zbigniew Jędrzejewski-Szmek 1c5950bd61 sleep: reword some debug messages
I think the sentences sound more natural this way.
2020-09-08 17:40:46 +02:00
Zbigniew Jędrzejewski-Szmek 44f0dd628c basic/log: make log_{info,warning,...} return void
log_debug still returns 0. I think it is legitimate to use 'return log_debug()' to
return 0. It is different than the other functions, since we often want to supress
errors logged at debug level. This case is quite common in the codebase and
we could use 'return log_debug_errno()' to make the code more consise.

For all other variants, a separate return line is required.
Previous commit changes all the non-conforming instances, now we can make it mandatory.
2020-09-08 17:40:46 +02:00
Zbigniew Jędrzejewski-Szmek c413bb28df tree-wide: correct cases where return log_{error,warning} is used without value
In various cases, we would say 'return log_warning()' or 'return log_error()'. Those
functions return 0 if no error is passed in. For log_warning or log_error this doesn't
make sense, and we generally want to propagate the error. In the few cases where
the error should be ignored, I think it's better to split it in two, and call 'return 0'
on a separate line.
2020-09-08 17:40:46 +02:00
Lennart Poettering 26c65933ba
Merge pull request #16978 from keszybz/two-variable-reduction-patches
Two variable reduction patches
2020-09-08 17:13:21 +02:00
Zbigniew Jędrzejewski-Szmek a9aa8deb29
Merge pull request #16618 from yuwata/network-ipv6token-prefixstable
network: make prefixstable mode of IPv6Token= can be applied any received prefixes
2020-09-08 13:36:27 +02:00
Zbigniew Jędrzejewski-Szmek 90e74a66e6 tree-wide: define iterator inside of the macro 2020-09-08 12:14:05 +02:00
Zbigniew Jędrzejewski-Szmek 12375b95dd core/unit: reduce scope of variables 2020-09-08 12:07:05 +02:00
Zbigniew Jędrzejewski-Szmek 8195283265
Merge pull request #16725 from yuwata/network-fix-ndisc-multiple-routers
network: fix NDisc behavior when multiple routers exist
2020-09-08 08:16:33 +02:00
Michal Sekletár 332d387f47 core: introduce support for setting NUMAMask= to special "all" value
Fixes #14113
2020-09-08 08:16:03 +02:00
Yu Watanabe b27caa34f6 network: make prefixstable mode of IPv6Token= can be applied to any received prefixes
Closes #4625.
2020-09-08 14:32:33 +09:00
Yu Watanabe 50550722e3 network: fix NDisc handling for the case when multiple routers exist
69203fba70 does not consider the case that
multiple routers exist, and causes #16719.

Fixes #16719.
2020-09-08 02:30:04 +09:00
Yu Watanabe 501b09dbf2 network: expose route_{hash,compare}_func() 2020-09-08 02:30:04 +09:00
Yu Watanabe 99a2878457 network: expose address_{hash,compare}_func() 2020-09-08 02:30:04 +09:00
Yu Watanabe badd49288d util: expose in6_addr_{hash,compare}_func() 2020-09-08 02:30:04 +09:00
Zbigniew Jędrzejewski-Szmek 6743a1caf4
Merge pull request #16928 from poettering/statx-fallback
stat-util: provide single statx() fallback on top of fstatat()
2020-09-05 22:04:18 +02:00
Christian Göttsche e813a74ae8 selinux: create /run/user/${USERID}/systemd with default context 2020-09-05 21:39:44 +02:00
Christian Göttsche 1006038cf1 selinux: early exit in mac_selinux_maybe_reload if not initialized
Binaries might not initialize SELinux, e.g. when they normally do not
create files with the SELinux default context.
If they, via an internal libary function, call a _label() function,
mac_selinux_maybe_reload() gets called. Since the SELinux status page
has not been opened, selinux_status_updated() will fail with EINVAL.

This affects particularly test binaries.

Just exit early and avoid confusing debug logs.
2020-09-05 21:39:12 +02:00
Zbigniew Jędrzejewski-Szmek ad161cd6bb
Merge pull request #16951 from yuwata/resolve-follow-ups-for-extra-dns-stub-listener
resolve: follow-ups for extra DNS stub listener
2020-09-05 15:55:22 +02:00
Zbigniew Jędrzejewski-Szmek 5615e92efa
Merge pull request #16854 from yuwata/sd-bus-error-set-errnofv
sd-bus: rework sd_bus_error_set_errnofv()
2020-09-05 15:47:37 +02:00
Lennart Poettering 8d91b2206c varlink: properly allocate connection event source
Let's make sure we keep a reference to the event source

(Note that this code is currently not used, which is why this was never
used: in all cases we do not add listener fds after the event is
attached, but before. In that case this code is not called.)
2020-09-04 23:54:14 +02:00
Lennart Poettering 1ba37106b3 ptyfwd: don't set prio if event source that might not exist
We support read-only ptyfwd options, and on those the input event source
won't be allocated. Deal with that and don't invoke a function on it
that will then instantly fail.
2020-09-04 23:52:41 +02:00
Lennart Poettering fb2cfa6c13 sd-bus: move SD_BUS_MAXIMUM_(SIGNATURE|NAME)_LENGTH to sd-bus-protocol.h
So far we kept all defines directly originating from the spec in
sd-bus-protocol.h, do this for this too.

The precise place doesn't matter much API-wise given that sd-bus.h includes
sd-bus-protocol.h, hence let's just clean this up.
2020-09-04 23:51:21 +02:00
Zbigniew Jędrzejewski-Szmek d11578f30e test-sizeof: print pointer sizes
This is useful information, I don't know why we forgot to add it there.

gcc doesn't like arithemetic on a pointer to a function or void*, so don't
print signedness info there. It doesn't matter anyway.
C says function pointers can be different... Though I guess our code isn't
prepared for that.
2020-09-04 18:45:44 +02:00
Zbigniew Jędrzejewski-Szmek cced2b98ef test-execute: check if private directories have bad permissions before running test_exec_dynamicuser()
If the directory (/var/lib/private is most likely) has borked permissions, the
test will fail with a cryptic message and EXIT_STATE_DIRECTORY or similar. The
message from the child with more details gets lost somewhere. Let's avoid running
the test in that case and provide a simple error message instead.

E.g. systemd-238-12.git07f8cd5.fc28.ppc64 (which I encountered on a test machine)
has /var/lib/private with 0755.
2020-09-04 18:45:44 +02:00
Zbigniew Jędrzejewski-Szmek 9978e631cd core/manager: reindent table for readability 2020-09-04 18:14:26 +02:00
Zbigniew Jędrzejewski-Szmek 5b10116e49 core/{execute, manager}: reduce scope of iterator variables a bit 2020-09-04 18:14:26 +02:00
Zbigniew Jędrzejewski-Szmek f90d2d7bf1 test-execute: simplify condition
tests is always a static array, it cannot be NULL.
2020-09-04 18:11:22 +02:00
Luca Boccassi 836540070d core: add [Enable|Disable]UnitFilesWithFlags DBUS methods
The new methods work as the unflavoured ones, but takes flags as a
single uint64_t DBUS parameters instead of different booleans, so
that it can be extended without breaking backward compatibility.
Add new flag to allow adding/removing symlinks in
[/etc|/run]/systemd/system.attached so that portable services
configuration files can be self-contained in those directories, without
affecting the system services directories.
Use the new methods and flags from portablectl --enable.

Useful in case /etc is read-only, with only the portable services
directories being mounted read-write.
2020-09-04 17:56:37 +02:00
Yu Watanabe f3f14c573b util: constify the second argument of set_get() 2020-09-04 17:52:26 +02:00
Yu Watanabe 89f7435d0c resolve: use correct fd for UDP stub listner 2020-09-04 23:54:35 +09:00
Yu Watanabe d1fb8cdae2 resolve: do not check sender and destination for packet received by extra DNS stub listner 2020-09-04 23:54:35 +09:00
Yu Watanabe 7216a3b5dc resolve: use sd_event_source_set_io_fd_own() for stub listners 2020-09-04 23:54:35 +09:00
Yu Watanabe bf22f231cf resolve: introduce dns_stub_listener_extra_free() and set it as a key destructor 2020-09-04 23:54:35 +09:00
Yu Watanabe 1c17bcb3ad resolve: adjust error messages 2020-09-04 23:54:35 +09:00
Yu Watanabe af8b138422 resolve: do not set IPv4 specific options on IPv6 socket 2020-09-04 23:54:30 +09:00
Yu Watanabe d40f00d798 resolve: do not set IP_TTL for extra DNS stub listeners 2020-09-04 23:53:22 +09:00
Yu Watanabe 180c22328b missing: add IPV6_FREEBIND 2020-09-04 23:53:18 +09:00
Lennart Poettering e825610499
Merge pull request #16880 from yuwata/network-dhcp4-cleanups
network: DHCPv4 cleanups
2020-09-04 15:54:27 +02:00
Zbigniew Jędrzejewski-Szmek 434fef6de3 shared/sleep-config: more logging and port to extract_first_word() 2020-09-04 13:53:47 +02:00
Yu Watanabe fc7676e313 util: drop unused socket_addr_port_from_string_auto() 2020-09-04 20:05:58 +09:00
Yu Watanabe ca8b62b522 resolve: use in_addr_union to store addresses for extra dns stub listeners 2020-09-04 20:05:58 +09:00
Yu Watanabe b4b7ea1b32 resolve: fix indentation 2020-09-04 20:05:58 +09:00
Yu Watanabe 4e0a46f65e util: introduce SOCKADDR_LEN() macro 2020-09-04 20:05:58 +09:00
Yu Watanabe fc6021554b test: add tests for in_addr_port_from_string_auto() 2020-09-04 20:05:58 +09:00
Yu Watanabe 23c5aeaac3 test: move several tests from test-socket-util.c 2020-09-04 20:05:58 +09:00
Yu Watanabe c4fe658366 util: introduce in_addr_port_to_string() 2020-09-04 20:05:58 +09:00
Yu Watanabe c364cefb3a util: make in_addr_ifindex_to_string() an alias of in_addr_port_ifindex_name_to_string() 2020-09-04 20:05:58 +09:00
Yu Watanabe 355e884ded util: introduce in_addr_port_from_string_auto() 2020-09-04 20:05:58 +09:00
Yu Watanabe 4650582657 resolve: stop extra stub listners before freeing information about them 2020-09-04 20:05:58 +09:00
Yu Watanabe 7314b39746 resolve: set DNS_STUB_LISTENER_YES if no protocol is specified in DNSStubListenExtra= 2020-09-04 20:05:58 +09:00
Yu Watanabe dce65cd40f resolve: Manager::dns_stub_listener_mode is not relevant to extra stub listeners 2020-09-04 20:05:58 +09:00
Yu Watanabe 88d2cb7c0e resolve: make DnsStubListenerMode bitfield 2020-09-04 20:05:58 +09:00
Yu Watanabe 8ae07803a0 resolve: rename dns_stub_extra_event_source -> event_source
As the name is too redundant.
2020-09-04 20:05:58 +09:00
Zbigniew Jędrzejewski-Szmek 46bf625aca Add string_contains_word_strv()
I had to move STRV_MAKE to macro.h. There is a circular dependency between
extract-word.h, strv.h, and string-util.h that makes it hard to define the
inline function otherwise.
2020-09-04 12:59:26 +02:00
Zbigniew Jędrzejewski-Szmek 81823e6c12 sd-login: use string_contains_word() 2020-09-04 12:59:26 +02:00
Zbigniew Jędrzejewski-Szmek 53cd7f3374 basic: add string_contains_word()
This wraps the common pattern of using extract_first_word() in a loop
to look for a matching word.
2020-09-04 12:59:25 +02:00
Zbigniew Jędrzejewski-Szmek 0176728a73 test-string-util,test-extract-word: add log headers 2020-09-04 12:59:25 +02:00
Zbigniew Jędrzejewski-Szmek 459c41b9e2
Merge pull request #16881 from yuwata/network-routing-policy-rule-cleanups
network: routing policy rule cleanups
2020-09-04 12:57:20 +02:00
Zbigniew Jędrzejewski-Szmek a36a23f52b
Merge pull request #16952 from yuwata/resolvectl-log-level-follow-ups
resolvectl: update help message
2020-09-04 12:21:15 +02:00
Yu Watanabe aea4660af8 test: add tests for sd_bus_error_set_errnof() 2020-09-04 19:15:50 +09:00
Yu Watanabe caf4ba83d5 sd-bus: use _cleanup_free_ macro in sd_bus_error_set_errnofv()
No functional change.
2020-09-04 19:15:45 +09:00
Yu Watanabe 2200c3cf56 network: fixes gateway assignment through DHCPv4
This fixes the following issue:
- If a DHCP lease does not contains router option, then routes with
`Gateway=_dhcp` setting introduce unexpected results.

This also makes several failure paths critical. And adjust warnings when
classless routes are provided.
2020-09-04 11:12:03 +02:00
Yu Watanabe bde4bc9bd2 resolvectl: add 'log-level' to help message
Follow-up for df9578498f.
2020-09-04 16:58:36 +09:00
Lennart Poettering 5b49641015 resolved: ttl/hopcount sockopt is not a boolean
These are integer values, hence specify them as integers, not as
booleans.
2020-09-04 15:23:12 +09:00
Amitanand.Chikorde c9f0e1ce5f sd-bus: drop unnecessary free()
As `e->message` here is always NULL.
2020-09-04 12:23:29 +09:00
Yu Watanabe c45fdad66d network: configure DHCP routes after DHCP address is ready 2020-09-04 09:05:45 +09:00
Yu Watanabe 687b3bc6f4 network: dhcp4: reset counter only when the lease address is new 2020-09-04 09:05:45 +09:00
Yu Watanabe 4dd6a3aad5 sd-ipv4acd: introduce sd_ipv4acd_get_address() 2020-09-04 09:05:45 +09:00
Yu Watanabe 5acf54a063 network: dhcp4: stop IPv4ACD before assigning new address 2020-09-04 09:05:34 +09:00
Yu Watanabe 6a776e3a18 sd-ipv4acd: do not call callback in sd_ipv4acd_stop() when it is already stopped 2020-09-04 09:04:43 +09:00
Yu Watanabe dce1cd4188 network: voidify return value of sd_ipv4acd_stop() 2020-09-04 09:04:43 +09:00
Yu Watanabe 5c72a6d5d3 network: logs about unknown key 2020-09-04 08:48:08 +09:00
Yu Watanabe f405179d65 network: honor already specified family when parsing from= or to= in serialized rule 2020-09-04 08:48:08 +09:00
Yu Watanabe 9d6282d120 network: do not reallocate buffer 2020-09-04 08:48:04 +09:00
Yu Watanabe d0ac05613b network: serialize InvertRule= in [RoutingPolicyRule] 2020-09-04 08:47:22 +09:00
Yu Watanabe 1680b11df4 network: add whitespace after family= and priority= in serialized routing policy rule
This also makes priority= serialized only when its value is non-zero.
2020-09-04 08:44:19 +09:00
Yu Watanabe 3c94b20dd3 network: downgrade error level when the error is ignored 2020-09-04 08:44:14 +09:00
Yu Watanabe 7e60a37d04 network: move routing_policy_rule_read_full_file() 2020-09-04 08:42:01 +09:00
Zbigniew Jędrzejewski-Szmek 908dbc70d6
Merge pull request #16044 from ssahani/resolved-interface
systemd-resolved: allow configurable bind address
2020-09-03 19:06:05 +02:00
Lennart Poettering 7d81d85a05 udev-test: don't mix alloca() and regular C stack allocation in one expression 2020-09-03 17:01:17 +02:00
Lennart Poettering 1e7a67ec22 udev-test: use SYNTHETIC_ERRNO() where useful 2020-09-03 17:01:17 +02:00
Lennart Poettering 91e0b0640e udev-test: use mount_verbose() instead of mount(), to make debugging easier 2020-09-03 17:01:17 +02:00
Lennart Poettering 415df097fe udev-test: make sure we run udev tests with selinux assumed off
This is cleaner that way given that we create our own half-virtualizes
device tree, and really shouldn't pull selinux labelling and access
control into that, we can only lose, in particular as our overmounted
/sys/ actually lacks /sys/fs/selinux.

(This fixes udev test woes introduced by #16821 where suddenly the test
would fail because libselinux assumed selinux was on, but selinuxfs
wasn't actually available)
2020-09-03 17:01:11 +02:00
Lennart Poettering ca194a2a0c stat-util: provide single fallback implementation of statx()
This simplifies things quite a bit, and is reusable wherever we want to
use statx() later on. Not sure why I didn't do it like this right from
the beginning...
2020-09-03 15:02:34 +02:00
Lennart Poettering 7cd296c28f stat-util: add new macros for declaring statx variable
Let's deal with the msan initialization issue once for all cases instead
of over and over again.
2020-09-03 15:02:16 +02:00
Lennart Poettering 86e443de2f
Merge pull request #16915 from poettering/cryptsetup-dlopen
pid1,repart,growfs: make libcryptsetup a dlopen() style dep
2020-09-03 14:57:29 +02:00
Lennart Poettering 7cc60ea414
Merge pull request #16821 from cgzones/selinux_status
selinux: use SELinux status page
2020-09-03 14:55:08 +02:00
Lennart Poettering c457bf4741
Merge pull request #16940 from keszybz/socket-enotconn-cleanup
Cleanup socket enotconn handling
2020-09-03 14:51:02 +02:00
Susant Sahani 1f05101fb6 resolve: allow configurable bind address 2020-09-03 08:27:41 +00:00
afg 67d5d9d5ce firstboot: don't create/modify passwd and shadow if not asked 2020-09-03 09:13:47 +02:00
Zbigniew Jędrzejewski-Szmek 5cf09553c3 core/socket: use _cleanup_ to close the connection fd
Removing the gotos would lead to a lot of duplicated code, so I left them
as they were.
2020-09-02 18:18:28 +02:00
Zbigniew Jędrzejewski-Szmek b669c20f97 core/socket: fold socket_instantiate_service() into socket_enter_running()
socket_instantiate_service() was doing unit_ref_set(), and the caller was
immediately doing unit_ref_unset(). After we get rid of this, it doesn't seem
worth it to have two functions.
2020-09-02 18:18:28 +02:00
Zbigniew Jędrzejewski-Szmek 86e045ecef core/socket: we may get ENOTCONN from socket_instantiate_service()
This means that the connection was aborted before we even got to figure out
what the service name will be. Let's treat this as a non-event and close the
connection fd without any further messages.

Code last changed in 934ef6a5.
Reported-by: Thiago Macieira <thiago.macieira@intel.com>

With the patch:
systemd[1]: foobar.socket: Incoming traffic
systemd[1]: foobar.socket: Got ENOTCONN on incoming socket, assuming aborted connection attempt, ignoring.
...

Also, when we get ENOMEM, don't give the hint about missing unit.
2020-09-02 18:17:30 +02:00
Gibeom Gwon 3d3d6e10da homed: remember the secret even when the for_state is FIXATING_FOR_ACQUIRE
Remember the secret if the for_state is FIXATING_FOR_ACTIVATION or
FIXATING_FOR_ACQUIRE. This fixes login failures when logging in
to an unfixated user.
2020-09-02 16:54:23 +02:00
Lennart Poettering 0d12936d9a shared: make libcryptsetup dep dlopen
Let's make libcryptsetup a dlopen() style dep for PID 1 (i.e. for
RootImage= and stuff), systemd-growfs and systemd-repart. (But leave to
be a regulra dep in systemd-cryptsetup, systemd-veritysetup and
systemd-homed since for them the libcryptsetup support is not auxiliary
but pretty much at the core of what they do.)

This should be useful for container images that want systemd in the
payload but don't care for the cryptsetup logic since dm-crypt and stuff
isn't available in containers anyway.

Fixes: #8249
2020-09-02 15:04:06 +02:00
Lennart Poettering 1e2f32305c shared: rename crypt-util.c → cryptsetup-util.c
"crypt-util.c" is such a generic name, let's avoid that, in particular
as libc's/libcrypt's crypt() function is so generically named too that
one might thing this is about that. Let's hence be more precise, and
make clear that this is about cryptsetup, and nothing else.

We already had cryptsetup-util.[ch] in src/cryptsetup/ doing keyfile
management. To avoid the needless confusion, let's rename that file to
cryptsetup-keyfile.[ch].
2020-09-02 15:00:32 +02:00
Christian Göttsche 346543d6f9 selinux/systemctl: create unit file with default context on edit 2020-09-02 09:07:59 +02:00
Lennart Poettering e4ec78206c import: make sure gnu tar complains on tar files with trailing garbage
By default GNU tar will only read the first archive if multiple archives
are concatenated and ignore the rest. If an archive contains trailing
garbage this will hence not be recognized by tar as error, it simply
stops reading when the first archive is done (which might escalate to
SIGPIPE when invoked via a pipe).

Let's add --ignore-zeros to the tar command line when extracting. This
means:

1) if a tar archive was concatenated (i.e. generated with tar -A) we'll
   process it correctly.

2) if a tar archive contains trailing garbage tar will now generate an
   error message about it, instead of just throwing EPIPE, which makes
   things easier to debug as broken files are not silently processed.

I think it's OK for gnu tar to ignore trailing garbage when dealing with
classic tapes drives, i.e. mediums that do not have a size limit
built-in. However, this is not what we are dealing with: we are dealing
with OS images here, that hopefully someone generated with a clean build
system, that were signed and validated and hence should not contain
trailing garbage.  Hence it's better to refuse and complain thant to
silently eat up like for classic tape drives.

Fixes: #16605
2020-09-02 08:59:33 +02:00
Lennart Poettering 58cf204730 nspawn: let's make LinkJournal an extended boolean
Let's accept the usual boolean parameters for LinkJournal. It's
confusing otherwise.

Previously we'd accept "no" but not the other values we typically accept
for "false". We'd not accept any values for "true".

With this change we'll accept all true and false values and will do
something somewhat reasonable: any false value is treated like "no"
previously was reated. And any true value is now treated like "auto".

We don't document the new values, since this logic is mostly redundant,
and it's probably better if people consider this an enum rather than a
bool.

Fixes: #16888
2020-09-02 08:57:44 +02:00
Zbigniew Jędrzejewski-Szmek 6ee37b1a7d
Merge pull request #16853 from poettering/udev-current-tag2
udev: make uevents "sticky"
2020-09-02 08:12:56 +02:00
Lennart Poettering 64a5384fd2 coredump: don't convert s → µs twice
We already append 000000 early on when parsing the cmdline args, let's
not do that a second time.

Fixes: #16919
2020-09-02 08:11:07 +02:00
afg ae0d36c161 firstboot: fill empty color if ansi_color unavailable from os-release 2020-09-02 08:10:47 +02:00
Susant Sahani 1f1f3210c9 shared: Introduce socket_addr_port_from_string_auto 2020-09-02 03:25:17 +00:00
Zbigniew Jędrzejewski-Szmek 47b04ef632
Merge pull request #16925 from cgzones/selinux_create_label
selinux/core: create several file objects with default SELinux context
2020-09-01 22:19:52 +02:00
Lennart Poettering 004cfad218
Merge pull request #16911 from keszybz/userdb-json-invalid-utf8
Deal properly with invalid utf-8 in userdb entries
2020-09-01 20:34:22 +02:00
Zbigniew Jędrzejewski-Szmek 2c0e46735b
Merge pull request #16922 from keszybz/ordered-set-ensure-allocated
Ordered set ensure allocated
2020-09-01 19:44:28 +02:00
Lennart Poettering 643bb92408 logind: always check current tag list before using a device 2020-09-01 17:40:13 +02:00
Lennart Poettering fccb48b286 logind: only apply ACLs for device currently tagged with "uaccess"
This is about security, hence let's be particularly careful here: only
devices currenlty tagged with "uaccess" will get ACL management, and
it's not sufficient if they once were (though that is used for
filtering).
2020-09-01 17:40:12 +02:00
Lennart Poettering 242c1c075a core: make sure to recheck current udev tag "systemd" before considering a device ready
Let's ensure that a device once tagged can become active/inactive simply
by toggling the current tag.

Note that this means that a device once tagged with "systemd" will
always have a matching .device unit. However, the active/inactive state
of the unit reflects whether it is currently tagged that way (and
doesn't have SYSTEMD_READY=0 set).

Fixes: #7587
2020-09-01 17:40:12 +02:00
Lennart Poettering 3b684be04b libudev: also expose API to check for current tags in libudev 2020-09-01 17:40:12 +02:00
Lennart Poettering e77b146f82 udev: make tags "sticky"
This tries to address the "bind"/"unbind" uevent kernel API breakage, by
changing the semantics of device tags.

Previously, tags would be applied on uevents (and the database entries
they result in) only depending on the immediate context. This means that
if one uevent causes the tag to be set and the next to be unset, this
would immediately effect what apps would see and the database entries
would contain each time. This is problematic however, as tags are a
filtering concept, and if tags vanish then clients won't hence notice
when a device stops being relevant to them since not only the tags
disappear but immediately also the uevents for it are filtered including
the one necessary for the app to notice that the device lost its tag and
hence relevance.

With this change tags become "sticky". If a tag is applied is once
applied to a device it will stay in place forever, until the device is
removed. Tags can never be removed again. This means that an app
watching a specific set of devices by filtering for a tag is guaranteed
to not only see the events where the tag is set but also all follow-up
events where the tags might be removed again.

This change of behaviour is unfortunate, but is required due to the
kernel introducing new "bind" and "unbind" uevents that generally have
the effect that tags and properties disappear and apps hence don't
notice when a device looses relevance to it. "bind"/"unbind" events were
introduced in kernel 4.12, and are now used in more and more subsystems.
The introduction broke userspace widely, and this commit is an attempt
to provide a way for apps to deal with it.

While tags are now "sticky" a new automatic device property
CURRENT_TAGS is introduced (matching the existing TAGS property) that
always reflects the precise set of tags applied on the most recent
events. Thus, when subscribing to devices through tags, all devices that
ever had the tag put on them will be be seen, and by CURRENT_TAGS it may
be checked whether the device right at the moment matches the tag
requirements.

See: #7587 #7018 #8221
2020-09-01 17:40:12 +02:00
Lennart Poettering 895abf3fdd
Merge pull request #16727 from wusto/core-fix-securebits
core: fix securebits setting
2020-09-01 17:21:48 +02:00
Renaud Métrich 3e5f04bf64 socket: New option 'FlushPending' (boolean) to flush socket before entering listening state
Disabled by default. When Enabled, before listening on the socket, flush the content.
Applies when Accept=no only.
2020-09-01 17:20:23 +02:00
Zbigniew Jędrzejewski-Szmek 5c0b738012 user-record-nss: check if strings from pwd/spwd/grp/sgrp are valid utf-8
strv_extend_strv_utf8_only() uses a temporary buffer to make the implementation
conscise. Otherwise we'd have to rewrite all of strv_extend_strv() which didn't
seem worth the trouble for this one use outside of a hot path.

If the data is not serializable, we just pretend it doesn't exists.
This fixes #16683 and https://bugs.gentoo.org/735072 in a second way.
2020-09-01 16:48:40 +02:00
Zbigniew Jędrzejewski-Szmek e60775cb7b shared: merge {user,group}-record-nss.{c,h}
They both are both short and contain similar parts and various helper will be
shared between both parts of the code so it's easier to use a single file.
2020-09-01 16:48:40 +02:00
Zbigniew Jędrzejewski-Szmek 4d7f51756a test-json: add function headers 2020-09-01 16:48:40 +02:00
Zbigniew Jędrzejewski-Szmek ea9afe0064 shared/json: reject non-utf-8 strings
JSON strings must be utf-8-clean. We also verify this in json_parse_string()
so we would reject a message with invalid utf-8 anyway.

It would probably be slightly cheaper to detect non-conformaning strings in
serialization, but then we'd have to fail serialization. By doing this early,
we give the caller a chance to handle the error nicely.

The test is adjusted to contain a valid utf-8 string after decoding of the
utf-32 encoding in json ("विवेकख्यातिरविप्लवा हानोपायः।", something about the
cessation of ignorance).
2020-09-01 16:48:40 +02:00
Zbigniew Jędrzejewski-Szmek 80ab31a435 shared/utf8: add utf8_is_valid_n()
Sometimes we need to check strings without the terminating NUL. Add a variant
that does that.
2020-09-01 16:48:40 +02:00
Zbigniew Jędrzejewski-Szmek f77d6ec953
Merge pull request #16877 from poettering/tmpfiles-statx
tmpfiles: use statx()
2020-09-01 16:32:50 +02:00
Christian Göttsche 63e00ccd8e selinux: create /run/systemd/userdb directory and sockets with default SELinux context 2020-09-01 16:26:12 +02:00
Christian Göttsche 45ae2f725e selinux: create systemd/notify socket with default SELinux context 2020-09-01 16:25:06 +02:00
Christian Göttsche a3f5fd964b selinux: create unit invocation links with default SELinux context 2020-09-01 15:48:53 +02:00
Zbigniew Jędrzejewski-Szmek 8a35af80fc basic/hashmap,set: move pointer symbol adjactent to the returned value
I think this is nicer in general, and here in particular we have a lot
of code like:
 static inline IteratedCache* hashmap_iterated_cache_new(Hashmap *h) {
         return (IteratedCache*) _hashmap_iterated_cache_new(HASHMAP_BASE(h));
 }
and it's visually appealing to use the same whitespace in the function
signature and the cast in the body of the function.
2020-09-01 13:45:51 +02:00
Zbigniew Jędrzejewski-Szmek e4126adf45 basic/hashmap,set: inline trivial set_iterate() wrapper
The compiler would do this to, esp. with LTO, but we can short-circuit the
whole process and make everything a bit simpler by avoiding the separate
definition.

(It would be nice to do the same for _set_new(), _set_ensure_allocated()
and other similar functions which are one-line trivial wrappers too. Unfortunately
that would require enum HashmapType to be made public, which we don't want
to do.)
2020-09-01 13:32:02 +02:00
Zbigniew Jędrzejewski-Szmek 1f25c71d9d basic: pass allocation info for ordered_set_new() and introduce ordered_set_ensure_put() 2020-09-01 12:42:35 +02:00
Susant Sahani b7847e05f5 basic: Introduce ordered_hashmap_ensure_put 2020-09-01 12:32:48 +02:00
Tobias Kaufmann dbdc4098f6 core: fix securebits setting
Desired functionality:
Set securebits for services started as non-root user.

Failure:
The starting of the service fails if no ambient capability shall be
raised.
... systemd[217941]: ...: Failed to set process secure bits: Operation
not permitted
... systemd[217941]: ...: Failed at step SECUREBITS spawning
/usr/bin/abc.service: Operation not permitted
... systemd[1]: abc.service: Failed with result 'exit-code'.

Reason:
For setting securebits the capability CAP_SETPCAP is required. However
the securebits (if no ambient capability shall be raised) are set after
setresuid.
When setresuid is invoked all capabilities are dropped from the
permitted, effective and ambient capability set. If the securebit
SECBIT_KEEP_CAPS is set the permitted capability set is retained, but
the effective and the ambient set are cleared.

If ambient capabilities shall be set, the securebit SECBIT_KEEP_CAPS is
added to the securebits configured in the service file and set together
with the securebits from the service file before setresuid is executed
(in enforce_user).
Before setresuid is executed the capabilities are the same as for pid1.
This means that all capabilities in the effective, permitted and
bounding set are set. Thus the capability CAP_SETPCAP is in the
effective set and the prctl(PR_SET_SECUREBITS, ...) succeeds.
However, if the secure bits aren't set before setresuid is invoked they
shall be set shortly after the uid change in enforce_user.
This fails as SECBIT_KEEP_CAPS wasn't set before setresuid and in
consequence the effective and permitted set was cleared, hence
CAP_SETPCAP is not set in the effective set (and cannot be raised any
longer) and prctl(PR_SET_SECUREBITS, ...) failes with EPERM.

Proposed solution:
The proposed solution consists of three parts
1. Check in enforce_user, if securebits are configured in the service
   file. If securebits are configured, set SECBIT_KEEP_CAPS
   before invoking setresuid.
2. Don't set any other securebits than SECBIT_KEEP_CAPS in enforce_user,
   but set all requested ones after enforce_user.
   This has the advantage that securebits are set at the same place for
   root and non-root services.
3. Raise CAP_SETPCAP to the effective set (if not already set) before
   setting the securebits to avoid EPERM during the prctl syscall.

For gaining CAP_SETPCAP the function capability_bounding_set_drop is
splitted into two functions:
- The first one raises CAP_SETPCAP (required for dropping bounding
  capabilities)
- The second drops the bounding capabilities

Why are ambient capabilities not affected by this change?
Ambient capabilities get cleared during setresuid, no matter if
SECBIT_KEEP_CAPS is set or not.
For raising ambient capabilities for a user different to root, the
requested capability has to be raised in the inheritable set first. Then
the SECBIT_KEEP_CAPS securebit needs to be set before setresuid is
invoked. Afterwards the ambient capability can be raised, because it is
in the inheritable and permitted set.

Security considerations:
Although the manpage is ambiguous SECBIT_KEEP_CAPS is cleared during
execve no matter if SECBIT_KEEP_CAPS_LOCKED is set or not. If both are
set only SECBIT_KEEP_CAPS_LOCKED is set after execve.
Setting SECBIT_KEEP_CAPS in enforce_user for being able to set
securebits is no security risk, as the effective and permitted set are
set to the value of the ambient set during execve (if the executed file
has no file capabilities. For details check man 7 capabilities).

Remark:
In capability-util.c is a comment complaining about the missing
capability CAP_SETPCAP in the effective set, after the kernel executed
/sbin/init. Thus it is checked there if this capability has to be raised
in the effective set before dropping capabilities from the bounding set.
If this were true all the time, ambient capabilities couldn't be set
without dropping at least one capability from the bounding set, as the
capability CAP_SETPCAP would miss and setting SECBIT_KEEP_CAPS would
fail with EPERM.
2020-09-01 10:53:26 +02:00
Tobias Kaufmann 57d4d284c9 capability-util: add new function for raising setpcap
Up to now the capability CAP_SETPCAP was raised implicitly in the
function capability_bounding_set_drop.

This functionality is moved into a new function
(capability_gain_cap_setpcap).

The new function optionally provides the capability set as it was
before raisining CAP_SETPCAP.
2020-09-01 10:53:26 +02:00
Zbigniew Jędrzejewski-Szmek e12b6e1951 json: split out string formatting to a separate function
It's complicated enough to deserve it's own function.

No functional change.
2020-09-01 10:48:10 +02:00
Zbigniew Jędrzejewski-Szmek 77472d06a4 varlink: do not parse invalid messages twice
Upon reception of a message which fails in json_parse(), we would proceed to
parse it again from a deferred callback and hang. Once we have realized that
the message is invalid, let's move the pointer in the buffer even if the
message is invalid. We don't want to look at this data again.

(before) $ build-rawhide/userdbctl --output=json user test.user
n/a: varlink: setting state idle-client
/run/systemd/userdb/io.systemd.Multiplexer: Sending message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"userName":"test.user","service":"io.systemd.Multiplexer"}}
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state idle-client → awaiting-reply
/run/systemd/userdb/io.systemd.Multiplexer: New incoming message: {...}
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state awaiting-reply → pending-disconnect
/run/systemd/userdb/io.systemd.Multiplexer: New incoming message: {...}
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state pending-disconnect → disconnected
^C

(after) $ n/a: varlink: setting state idle-client
/run/systemd/userdb/io.systemd.Multiplexer: Sending message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"userName":"test.user","service":"io.systemd.Multiplexer"}}
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state idle-client → awaiting-reply
/run/systemd/userdb/io.systemd.Multiplexer: New incoming message: {...}
/run/systemd/userdb/io.systemd.Multiplexer: Failed to parse JSON: Invalid argument
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state awaiting-reply → pending-disconnect
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state pending-disconnect → processing-disconnect
Got lookup error: io.systemd.Disconnected
/run/systemd/userdb/io.systemd.Multiplexer: varlink: changing state processing-disconnect → disconnected
Failed to find user test.user: Input/output error

This should fix #16683 and https://bugs.gentoo.org/735072.
2020-09-01 10:48:10 +02:00
Zbigniew Jędrzejewski-Szmek 4fcc9c4962 userdb: fix typo 2020-09-01 10:48:10 +02:00
Zbigniew Jędrzejewski-Szmek c4651e3156 userdbctl: add forgotten --output mode in help 2020-09-01 10:48:10 +02:00
Zbigniew Jędrzejewski-Szmek 52d3fbc83f shared: merge {user,group}-record-show.[ch]
It is natural to include both, and in total they declared three
functions. Let's merge them for simplicity.
2020-09-01 10:48:03 +02:00
Anita Zhang 0419dae715
Merge pull request #16885 from keszybz/rework-cache-timestamps
Rework cache timestamps
2020-08-31 23:21:12 -07:00
Lennart Poettering 4dc286658d dissect-image: generate nice error when we can't detect any file system 2020-08-31 22:11:53 +02:00
Zbigniew Jędrzejewski-Szmek 31be0e9e00 basic/escape: use consistent location for "*" in function declarations
I think it's nicer to move it to the left, since the function
is already a pointer by itself, and it just happens to return a pointer,
and the two concepts are completely separate.
2020-08-31 21:34:01 +02:00
Zbigniew Jędrzejewski-Szmek 8f796e40a5 shared/{user,group}-record-nss: adjust filtering of "valid" passwords
We would reject various passwords that glibc accepts, for example ""
or any descrypted password. Accounts with empty password are definitely
useful, for example for testing or in scenarios where a password is not
needed. Also, using weak encryption methods is probably not a good idea,
it's not the job of our nss helpers to decide that: they should just
faithfully forward whatever data is there.

Also rename the function to make it more obvious that the returned answer
is not in any way certain.
2020-08-31 21:33:16 +02:00
Zbigniew Jędrzejewski-Szmek c2911d48ff Rework how we cache mtime to figure out if units changed
Instead of assuming that more-recently modified directories have higher mtime,
just look for any mtime changes, up or down. Since we don't want to remember
individual mtimes, hash them to obtain a single value.

This should help us behave properly in the case when the time jumps backwards
during boot: various files might have mtimes that in the future, but we won't
care. This fixes the following scenario:

We have /etc/systemd/system with T1. T1 is initially far in the past.
We have /run/systemd/generator with time T2.
The time is adjusted backwards, so T2 will be always in the future for a while.
Now the user writes new files to /etc/systemd/system, and T1 is updated to T1'.
Nevertheless, T1 < T1' << T2.
We would consider our cache to be up-to-date, falsely.
2020-08-31 20:53:38 +02:00
Zbigniew Jędrzejewski-Szmek 02103e5716 core: always try to reload not-found unit
This check was added in d904afc730. It would only
apply in the case where the cache hasn't been loaded yet. I think we pretty
much always have the cache loaded when we reach this point, but even if we
didn't, it seems better to try to reload the unit. So let's drop this check.
2020-08-31 20:53:38 +02:00
Zbigniew Jędrzejewski-Szmek c149d2b491 pid1: use the cache mtime not clock to "mark" load attempts
We really only care if the cache has been reloaded between the time when we
last attempted to load this unit and now. So instead of recording the actual
time we try to load the unit, just store the timestamp of the cache. This has
the advantage that we'll notice if the cache mtime jumps forward or backward.

Also rename fragment_loadtime to fragment_not_found_time. It only gets set when
we failed to load the unit and the old name was suggesting it is always set.

In https://bugzilla.redhat.com/show_bug.cgi?id=1871327
(and most likely https://bugzilla.redhat.com/show_bug.cgi?id=1867930
and most likely https://bugzilla.redhat.com/show_bug.cgi?id=1872068) we try
to load a non-existent unit over and over from transaction_add_job_and_dependencies().
My understanding is that the clock was in the future during inital boot,
so cache_mtime is always in the future (since we don't touch the fs after initial boot),
so no matter how many times we try to load the unit and set
fragment_loadtime / fragment_not_found_time, it is always higher than cache_mtime,
so manager_unit_cache_should_retry_load() always returns true.
2020-08-31 20:53:38 +02:00
Zbigniew Jędrzejewski-Szmek 81be23886d core: rename manager_unit_file_maybe_loadable_from_cache()
The name is misleading, since we aren't really loading the unit from cache — if
this function returns true, we'll try to load the unit from disk, updating the
cache in the process.
2020-08-31 20:53:38 +02:00
Lennart Poettering b519529104
Merge pull request #16841 from keszybz/acl-util-bitmask
Use a bitmask in fd_add_uid_acl_permission()
2020-08-31 16:45:13 +02:00
Daan De Meyer a667ddf132
Merge pull request #16898 from poettering/resolved-errno
make sure we have `answer_errno` always properly initialized before we end a transaction with ERRNO cause
2020-08-30 18:05:38 +01:00
Florian Klink 43269733ef homed: fix log message to honor real homework path
This seems to be overridable by setting the SYSTEMD_HOMEWORK_PATH env
variable, but the error message always printed the SYSTEMD_HOMEWORK_PATH
constant.
2020-08-30 17:04:01 +02:00
fangxiuning 6d95e7d9b2
tree-wide: drop pointless zero initialization (#16900) 2020-08-30 06:21:20 +09:00
Fabrice Fontaine 28e2641a1a
src/shared/dissect-image.c: fix build without blkdid (#16901)
N_DEVICE_NODE_LIST_ATTEMPTS is unconditionally used since version 246 and
ac1f3ad05f

However, this variable is only defined if HAVE_BLKID is set resulting in
the following build failure if cryptsetup is enabled but not libblkid:

../src/shared/dissect-image.c:1336:34: error: 'N_DEVICE_NODE_LIST_ATTEMPTS' undeclared (first use in this function)
 1336 |         for (unsigned i = 0; i < N_DEVICE_NODE_LIST_ATTEMPTS; i++) {
      |

Fixes:
 - http://autobuild.buildroot.org/results/67782c225c08387c1bbcbea9eee3ca12bc6577cd
2020-08-30 06:17:18 +09:00
Lennart Poettering ca19dedb56 sym: fix bad symbol file addition
The next release is 247, not 248.

A follow-up for 2b07ec316a
2020-08-29 12:35:00 +02:00
Lennart Poettering a75cb4e20a resolved: remove superfluous ;; 2020-08-28 22:59:26 +02:00
Lennart Poettering 95d2155aeb tree-wide: no need to negate argument to ERROR_IS_XYZ()
These macros call abs() internally, hence let's simplify invocations.
2020-08-28 22:58:58 +02:00
Lennart Poettering fd8a301703 resolved: make sure we initialize t->answer_errno before completing the transaction
We must have the error number around when completing the transaction.
Let's hence make sure we always initialize it *first* (we accidentally
did it once after).

Fixes: #11626
2020-08-28 22:44:57 +02:00
Lennart Poettering 5895a9d600
Merge pull request #16874 from poettering/analyze-cap
introduce "systemd-analyze capability" command for dumping locally defined caps
2020-08-28 21:01:56 +02:00
Daniel Mack 5170afbc55 clock-util: read timestamp from /usr/lib/clock-epoch
On systems without an RTC, systemd currently sets the clock to a
compile-time epoch value, derived from the NEWS file in the
repository. This is not ideal as the initial clock hence depends
on the last time systemd was built, not when the image was compiled.

Let's provide a different way here and look at `/usr/lib/clock-epoch`.
If that file exists, it's timestamp for the last modification will be
used instead of the compile-time default.
2020-08-28 18:58:22 +02:00
Lennart Poettering b2af819b22 analyze: add 'capability' verb for dumping all known and unknown caps 2020-08-28 18:52:48 +02:00
Lennart Poettering 0f849d0af9 analyze: fix error handling in one case 2020-08-28 18:14:53 +02:00
Lennart Poettering 524bdc95e7 basic: make sure we include inttypes.h when we use its types 2020-08-28 18:14:35 +02:00
fangxiuning c53aafb7b5
tree-wide: drop pointless zero initialization (#16884)
tree-wide: drop pointless zero initialization
2020-08-28 17:45:54 +02:00
Lennart Poettering cd17bb6e71 networkd: consider any uevent other than "remove" sufficient for the network device to be ready 2020-08-28 17:45:05 +02:00
Ikey Doherty 97207ac85c login/logind: Include sys/stat.h for struct stat usage
We need to include `<sys/stat.h>` for usage of the `struct stat` in
the Manager struct, much as we already include `<stdbool.h>` for C99
booleans.

This helps alleviate another minor build failure on non-glibc systems.
2020-08-28 17:44:39 +02:00
Lennart Poettering ddb439b8f9 tmpfiles: use statx() when aging files
This allows us to properly detect mount points, for free. (Also, allows
us to respect btimes that are newer than the cutoff, which should be
useful when people untar file trees in /var/tmp)

Fixes: #16848
2020-08-28 15:45:37 +02:00
Lennart Poettering cd1361e203 time-util: add timespec_store_nsec()
timespec_store_nsec() is to timespec_store() what timespec_load_nsec()
is to timespec_load(), i.e. the nsec version of the usual usec API
2020-08-28 14:22:43 +02:00
Plan C b23728ec9f
Add simple usage message to systemd-backlight (#16709) 2020-08-28 13:50:35 +02:00
Ikey Doherty 677bb0555a partition/makefs: Include missing sys/file.h header
This file must be included on non-glibc systems to ensure
the `LOCK_EX` definition is available.

Signed-off-by: Ikey Doherty <ikey.doherty@lispysnake.com>
2020-08-28 13:32:09 +02:00
Lennart Poettering ae6ad21e0b device: propagate reload events from devices on everything but "add", and "remove"
Any uevent other then the initial and the last uevent we see for a
device (which is "add" and "remove") should result in a reload being
triggered, including "bind" and "unbind". Hence, let's fix up the check.

("move" is kinda a combined "remove" + "add", hence cover that too)
2020-08-28 13:30:13 +02:00
Zbigniew Jędrzejewski-Szmek c1afa2ed39
Merge pull request #16879 from keszybz/test-last-cap-and-dbus-docs
Add "developer mode" and test last cap and dbus docs
2020-08-28 08:30:00 +02:00
Yu Watanabe 876dc2b014 network: dhcp6: logs only new address
Closes #16731.
2020-08-27 21:24:07 +02:00
Zbigniew Jędrzejewski-Szmek b7be416f55 basic/missing_capability: clean up our defines and check that our fallback is up-to-date
There is little point in #defining and #undefining CAP_LAST_CAP multiple times.

The check is only done in developer mode. After all, it's not an error to
compile on a newer kernel, and we shouldn't even warn in that case.
2020-08-27 20:20:23 +02:00
Zbigniew Jędrzejewski-Szmek c87d0661a0 test-path: remove unnecessary check
test points to an array, so it canont be NULL at this point.
2020-08-27 20:20:23 +02:00
Daan De Meyer f17bdf8264 Don't run test-repart when loop devices are not available 2020-08-27 17:14:58 +02:00
Lennart Poettering df92f4fa8d
Merge pull request #16864 from yuwata/coverity-fixes
Two coverity fixes
2020-08-27 16:36:40 +02:00
Lennart Poettering 4fc14c345f
Merge pull request #16866 from yuwata/networkctl-tiny-cleanups
networkctl: tiny cleanups
2020-08-27 16:34:43 +02:00
Michal Koutný 94d21c2ef6 missing: Add new Linux capability
Yet another new capability coming in Linux kernel v5.9.
Make sure we can recongize them even when built with older kernel headers.
2020-08-27 16:13:09 +02:00
Yu Watanabe 89d36ce8f7 journal: fix divide-by-zero warning
Fixes CID#1430209.
2020-08-27 18:20:34 +09:00
Yu Watanabe 8062e643e6 core: clear bind mounts on error
Follow-up for bbb4e7f39f.

Fixes CID#1431998.
2020-08-27 18:20:34 +09:00
Zbigniew Jędrzejewski-Szmek 67165f7630
Merge pull request #16860 from poettering/tty-ask-pw-agent-list-fix
tty-ask-password-agent: three fixes
2020-08-27 10:58:13 +02:00
Christian Göttsche 2df2152c20 selinux: fork label-aware children with up-to-date label database
The parent process may not perform any label operation, so the
database might not get updated on a SELinux policy change on its own.

Reload the label database once on a policy change, instead of n times
in every started child.
2020-08-27 10:28:53 +02:00
Christian Göttsche fd5e402fa9 selinux: use SELinux status page
Switch from security_getenforce() and netlink notifications to the
SELinux status page.

This usage saves system calls and will also be the default in
libselinux > 3.1 [1].

[1]: 05bdc03130
2020-08-27 10:28:53 +02:00
Zbigniew Jędrzejewski-Szmek 567aeb5801 shared/acl-util: convert rd,wr,ex to a bitmask
I find this version much more readable.

Add replacement defines so that when acl/libacl.h is not available, the
ACL_{READ,WRITE,EXECUTE} constants are also defined. Those constants were
declared in the kernel headers already in 1da177e4c3f41524e886b7f1b8a0c1f,
so they should be the same pretty much everywhere.
2020-08-27 10:20:12 +02:00
Yu Watanabe df696b1413 networkctl: label command does not take any argument 2020-08-27 16:32:13 +09:00
Lennart Poettering 25f3b27270 udev: use path_startswith() instead of startswith() in two more cases 2020-08-27 16:16:43 +09:00
PhoenixDiscord e8607daf7d
Replace gendered pronouns with gender neutral ones. (#16844) 2020-08-27 11:52:48 +09:00
Chris Down 33e1a5d8d3 path: Improve $PATH search directory case
Previously:

1. last_error wouldn't be updated with errors from is_dir;
2. We'd always issue a stat(), even for binaries without execute;
3. We used stat() instead of access(), which is cheaper.

This change avoids all of those, by only checking inside X_OK-positive
case whether access() works on the path with an extra slash appended.
Thanks to Lennart for the suggestion.
2020-08-27 00:52:20 +01:00
Lennart Poettering a4fd6cd3f5 tty-ask-pw-agent: properly propagate error 2020-08-26 23:10:50 +02:00
Lennart Poettering 66bff73b4f tty-ask-pw-agent: the message string might not be set 2020-08-26 23:10:05 +02:00
Lennart Poettering 4c4a018cab tty-ask-pw-agent: make sure "--list" works correctly
Fixes: #16836
2020-08-26 23:02:13 +02:00
Lennart Poettering 0c73f4f075 nss-resolve: port over to new varlink interface 2020-08-26 16:48:16 +02:00
Lennart Poettering 9581bb8424 resolved: add minimal varlink api for resolving hostnames/addresses
This allows us to later port nss-resolve to use Varlink rather than
D-Bus for resolution. This has the benefit that nss-resolve based
resoluton works even without D-Bus being up. And it's faster too.
2020-08-26 16:48:06 +02:00
Lennart Poettering c17b5ce739 resolved: minor clean-ups for resolved-bus.c 2020-08-26 16:48:02 +02:00
Lennart Poettering 65a01e8242 resolved: move query bus tracking to resolved-bus.c
It's strictly bus-specific, hence let's move this to resolved-bus.c like
the rest of the bus specific logic.

This is also in preparation for adding an alternative varlink transport,
which needs similar functionality, but varlink instead of bus-specific.
2020-08-26 16:47:57 +02:00
Lennart Poettering c9de4e0f5b resolved: rename request → bus_request
Let's prepare for adding a new varlink interface, and thus rename the
"request" field to "bus_request", so that we can later add a
varlink_request field too.
2020-08-26 16:47:53 +02:00
Lennart Poettering d4f72f0d21 resolved: drop suppress_unroutable_family field
It's unused since 90bdc8be66.
2020-08-26 16:47:49 +02:00
Lennart Poettering b97e3e3d7a json: also add explicit dispatchers for 'int' and 'unsigned' 2020-08-26 16:47:32 +02:00
Lennart Poettering 0710343ce7 json: add support for byte arrays to json builder 2020-08-26 16:47:16 +02:00
Lennart Poettering 7466e94f13 varlink: add helper for generating errno errors 2020-08-26 16:46:57 +02:00
Lennart Poettering c7dfa1df8b in-addr-util: add byte accessor array to union in_addr_union
It's pretty useful to be able to access the bytes generically, without
acknowledging a specific family, hence let's a third way to access an
in_addr_union.
2020-08-26 16:46:12 +02:00
Zbigniew Jędrzejewski-Szmek b6abc2acb4
Merge pull request #16568 from poettering/creds-store
credentials logic to pass privileged data to services
2020-08-26 10:32:30 +02:00
Chris Down 8b5cb69bc8 path: Skip directories when finalising $PATH search
Imagine $PATH /a:/b. There is an echo command at /b/echo. Under this
configuration, this works fine:

    % systemd-run --user --scope echo .
    Running scope as unit: run-rfe98e0574b424d63a641644af511ff30.scope
    .

However, if I do `mkdir /a/echo`, this happens:

    % systemd-run --user --scope echo .
    Running scope as unit: run-rcbe9369537ed47f282ee12ce9f692046.scope
    Failed to execute: Permission denied

We check whether the resulting file is executable for the performing
user, but of course, most directories are anyway, since that's needed to
list within it. As such, another is_dir() check is needed prior to
considering the search result final.

Another approach might be to check S_ISREG, but there may be more gnarly
edge cases there than just eliminating this obviously pathological
example, so let's just do this for now.
2020-08-26 10:22:02 +02:00
Vito Caputo d4739bc4d3 sd-journal: narrow scope of boot id variable
Something trivial I noticed during some unrelated code spelunking
2020-08-25 22:41:35 +02:00
Lennart Poettering 3652872add nspawn: add --set-credential= and --load-credential=
Let's allow passing in creds to containers, so that PID 1 inside the
container can pick them up.
2020-08-25 19:45:47 +02:00
Lennart Poettering bbb4e7f39f core: hide /run/credentials whenever namespacing is requested
Ideally we would like to hide all other service's credentials for all
services. That would imply for us to enable mount namespacing for all
services, which is something we cannot do, both due to compatibility
with the status quo ante, and because a number of services legitimately
should be able to install mounts in the host hierarchy.

Hence we do the second best thing, we hide the credentials automatically
for all services that opt into mount namespacing otherwise. This is
quite different from other mount sandboxing options: usually you have to
explicitly opt into each. However, given that the credentials logic is a
brand new concept we invented right here and now, and particularly
security sensitive it's OK to reverse this, and by default hide
credentials whenever we can (i.e. whenever mount namespacing is
otherwise opt-ed in to).

Long story short: if you want to hide other service's credentials, the
most basic options is to just turn on PrivateMounts= and there you go,
they should all be gone.
2020-08-25 19:45:38 +02:00
Lennart Poettering bb0c0d6f29 core: add credentials logic
Fixes: #15778 #16060
2020-08-25 19:45:35 +02:00
Lennart Poettering 9db59d9283 acl-util: beef up add_acls_for_user()
Let's add support for controlling r/w/x bits separetely. This is useful
for using it to control access to directories, where r + x shall be
enabled.
2020-08-25 18:39:45 +02:00
Lennart Poettering 71281a7655 acl-util: make sure acl_find_uid() initializes return parameters on success
Let's follow our usual coding style and initialize return parameters on
success in all cases.
2020-08-25 18:39:45 +02:00
Lennart Poettering 2899fb024f rm-rf: add new flag REMOVE_CHMOD
When removing a directory tree as unprivileged user we might encounter
files owned by us but not deletable since the containing directory might
have the "r" bit missing in its access mode. Let's try to deal with
this: optionally if we get EACCES try to set the bit and see if it works
then.
2020-08-25 18:39:45 +02:00
Lennart Poettering 9be99f81a7 homed: report a home directory as "dirty" if image file has dirty flag 2020-08-25 18:18:56 +02:00
Lennart Poettering 565ac8b1c8 homed: mark LUKS loopback file as "dirty" via xattr when in use
Let's track the "dirty" state of a home directory backed by a LUKS
volume by setting a new xattr "home.home-dirty" on the backing file
whenever it is in use.

This allows us to later user this information to show a home directory
as "dirty". This is useful because we trim/allocate on log-out, and
if we don't do that a home directory will be larger than necessary. This
fact is something we should communicate to the admin.

The idea is that when an admin sees a user with a "dirty" home directory
they can ask them to log in, to clean up the dirty state, and thus trim
everything again.
2020-08-25 18:18:46 +02:00
Lennart Poettering 80c41552a8 homectl: teach homectl to generate recovery keys 2020-08-25 18:14:55 +02:00
Lennart Poettering 87d7893cfb homed: support recovery keys
For discussion around this see: https://pagure.io/fedora-workstation/issue/82

Recovery keys for homed are very similar to regular passwords, except
that they are exclusively generated by the computer, and not chosen by
the user. The idea is that they are printed or otherwise stored
externally and not what users type in every day.

Taking inspiration from Windows and MacOS this uses 256bit keys. We
format them in 64 yubikey modhex characters, in groups of 8 chars
separated by dashes.

Why yubikey modhex? modhex only uses characters that are are located at
the same place in western keyboard designs. This should reduce the
chance for incorrect inputs for a major chunk of our users, though
certainly not all. This is particular relevant during early boot and
recovery situations, where there's a good chance the keyboard mapping is
not correctly set up.
2020-08-25 18:14:55 +02:00
Lennart Poettering aecbc87df4 home: add helper to process/normalize modhex64 recovery keys 2020-08-25 18:14:55 +02:00
Lennart Poettering da3920c3a4 journal: move qrcode printing code to src/shared/
That way we can make use of it in homctl, too.
2020-08-25 17:58:02 +02:00
Lennart Poettering b3a97fd3ae user-record: add recovery key fields to user record 2020-08-25 17:58:02 +02:00
Lennart Poettering 45374f6503
Merge pull request #15662 from Werkov/fix-cgroup-disable
Fix unsetting cgroup restrictions
2020-08-25 17:36:07 +02:00
Lennart Poettering 47d0644e1a
Merge pull request #16833 from JackFangXN/master
analyze-verify: drop pointless zero initialization
2020-08-25 13:20:11 +02:00
Zbigniew Jędrzejewski-Szmek 3b9d671754
Merge pull request #16676 from poettering/repart-mkfs
repart: add new settings Format=, CopyFiles=, Encrypt= and teach --size= a new value "auto"
2020-08-25 12:19:46 +02:00
Zbigniew Jędrzejewski-Szmek c3bbc90b4a
Merge pull request #16777 from DaanDeMeyer/kernel-install-followup
kernel-install: "Linux" => "Default" and reuse $BOOT/Default if it already exists
2020-08-25 09:30:44 +02:00
Zbigniew Jędrzejewski-Szmek 2c7d33d9e3
Merge pull request #16767 from keszybz/missing-syscall-cleanup
missing_syscall: verify our fallback numbers when possible
2020-08-25 09:21:32 +02:00
Zbigniew Jędrzejewski-Szmek b20f00599d
Merge pull request #16816 from keszybz/install-templated-presets
Fix preset operation for non-service templates
2020-08-25 09:20:07 +02:00
Zbigniew Jędrzejewski-Szmek 9f56c88aeb
Merge pull request #16819 from keszybz/seccomp-enosys
Return ENOSYS in nspawn for "unknown" syscalls
2020-08-25 09:18:46 +02:00
fangxiuning 05f7a0689e analyze: drop pointless zero initialization 2020-08-25 15:17:52 +08:00
Zbigniew Jędrzejewski-Szmek d521e6993d
Merge pull request #16824 from keszybz/no-such-unit-error
Add sd_bus_error_has_names() and use it to catch BUS_ERROR_NO_SUCH_UNIT
2020-08-25 09:16:25 +02:00
fangxiuning 6f32f8e037 analyze-verify: drop pointless zero initialization 2020-08-25 15:10:15 +08:00
Lennart Poettering f053c9477b core: drop redundant comment
Since 625a164069 we don't need to update
analyze-condition.c separately anymore, hence drop the comment
suggesting otherwise.
2020-08-25 07:47:50 +02:00
Lennart Poettering bb2551bdcb loop-util: LOOP_CONFIGURE ignores lo_sizelimit
It appears LOOP_CONFIGURE in 5.8 is even more broken than initially
thought: it doesn't properly propgate lo_sizelimit to the block device
layer. :-(

Let's hence check the block device size immediately after issuing
LOOP_CONFIGURE, and if it doesn't match what we just set let's fallback
to the old ioctls.

This means LOOP_CONFIGURE currently works correctly only for the most
simply case: no partition table logic and no size limit. Sad!

(Kernel people should really be told about the concepts of tests and
even CI, one day!)
2020-08-24 22:01:13 +02:00
Lennart Poettering f7011e17f1 test: add test for new repart features 2020-08-24 22:00:49 +02:00
Lennart Poettering 170c982345 repart: if --size= is specified as "auto" determine minimal size for disk image
When assembling a disk image locally, using --size=auto can be used to
generate the minimal image based on the provided definitions. THis is
useful to prepare images that are grown on first boot.
2020-08-24 22:00:45 +02:00
Lennart Poettering b9df353689 repart: add support for optionally encrypting partitions we create 2020-08-24 22:00:42 +02:00
Lennart Poettering 8a794850e7 repart: add new CopyFiles= setting, for copying files into freshly made file systems
This makes the tool a lot more useful for streaming OS images onto
disks.
2020-08-24 22:00:38 +02:00
Lennart Poettering 1f0f82f131 dissect: create directories we want to mount on
This matches how we handle things everywhere else, i.e. in .mount units,
and similar: when a mount point dir is missing, we create it, let's do
so too when dealing with disk images.

This makes things a lot simpler, more robust, and systematic.
2020-08-24 22:00:35 +02:00
Lennart Poettering f0cb1b951c repart: wipe partition first, then discard
Wiping means writing zero sectors to disk. Hence it's better to do this
before we discard, so that the zeroes we use to overwrite are properly
discarded. If we'd do it the other way round we'd discard the data and
then reallocte it just to write zeroes.
2020-08-24 22:00:31 +02:00
Lennart Poettering 5b5109e225 repart: talk about future partitions
We initialize the partition contents before the partitions actually
exist, hence to reduce confusion let's talk about "future partitions" up
to the point where they are actually realized.
2020-08-24 22:00:28 +02:00
Lennart Poettering 81873a6b6c repart: let's wipe the partition table ourselves
Let's issue the wiping ourselves, so that we know it's done before we
write partition data onto the disk, and before the disk label
is written. Before this commit the writing of the disk label would imply
the wiping step, potentially overriding again what we just wrote into
the disk data section.

(Normally this shouldn't matter, since the partition table metadata
that the wiping process deletes is at the start and end of the disk
while we write our data to the middle, but you never know what kind of
weird signatures might exist that depart from that.)

(And effectively this ends up using the same wiping code, since that's
implemented in libblkkid, and libfdisk just acts as frontend to that
anyway. We now simply call it directly.)
2020-08-24 22:00:24 +02:00
Lennart Poettering f28d4f42f4 repart: split out code that mangles part table entries into function of its own
Just some refactoring, no actual code change.
2020-08-24 22:00:21 +02:00
Lennart Poettering 0f2b2c483f mkfs-util: add support for making vfat partitions
fat is a bit more limited in volume name length and UUID support. Let's
add some special support for it.

This is particularly useful to generate EFI system partitions.
2020-08-24 22:00:17 +02:00
Lennart Poettering 53171c0453 repart: add support for formatting newly created partitions 2020-08-24 22:00:14 +02:00
Lennart Poettering aa2a74ad9d repart: make error code when operating on non-existing file a bit more useful 2020-08-24 22:00:10 +02:00
Lennart Poettering da49710ef2 makefs: port to generic make_filesystem() call 2020-08-24 22:00:07 +02:00
Lennart Poettering c95f9a2351 shared: introduce mkfs-util.c/.h
Let's move the "mkfs" code from homed there, plus other related code.

This way we can easily reuse it from other places.
2020-08-24 21:59:49 +02:00
Lennart Poettering 8dbc208cc1 loop-util: define API for syncing loopback device 2020-08-24 21:59:35 +02:00
Lennart Poettering 0de3c4f4b7 mkdir: add new mkdir_p_root() helper 2020-08-24 21:59:21 +02:00
Lennart Poettering 15d43e3065 repart: don't unload data we configured explicitly, and fully free all data we match to disk
The context_unload_partition_table() call is supposed to remove all
data from the loaded partitions about how we mapped it to existing
partitions on disk, but it should leave everything we parsed from the
definition files in place.

We mostly got this right, except for two cases:

1. new_uuid is parsed from the definition files and should stay

2. current_label is read from the existing partition table and should be
   freed
2020-08-24 21:58:53 +02:00
Daan De Meyer 2c46d523ac kernel-install: Reuse $BOOT/Default if it already exists
Avoids duplicate installation problems when the machine ID is
initialized after a kernel is already installed under $BOOT/Default.
2020-08-24 19:24:19 +01:00
Daan De Meyer 6426c98ac5 kernel-install: Use "Default" as fallback instead of "Linux"
"Linux" conflicts /efi/Linux when /efi is the install location.
/efi/Linux is already reserved for unified kernel images so we can't use
it for type #1 images. Instead, we use "Default".
2020-08-24 19:22:11 +01:00
Lennart Poettering ed125c936c analyze-security: check for ProtectProc=/ProcSubset= 2020-08-24 20:11:10 +02:00
Lennart Poettering 4e39995371 core: introduce ProtectProc= and ProcSubset= to expose hidepid= and subset= procfs mount options
Kernel 5.8 gained a hidepid= implementation that is truly per procfs,
which allows us to mount a distinct once into every unit, with
individual hidepid= settings. Let's expose this via two new settings:
ProtectProc= (wrapping hidpid=) and ProcSubset= (wrapping subset=).

Replaces: #11670
2020-08-24 20:11:02 +02:00
Lennart Poettering df6b900a1b namespace: assert() first, use second 2020-08-24 20:10:58 +02:00
Lennart Poettering 52b3d6523f namespace: move protect_{home|system} into NamespaceInfo
it's not entirely clear what shall be passed via parameter and what via
struct, but these two definitely fit well with the other protect_xyz
fields, hence let's move them over.

We probably should move a lot more more fields into the structure
actuall (most? all even?).
2020-08-24 20:10:30 +02:00
Zbigniew Jędrzejewski-Szmek 8694114b80 generate-syscall-list: require python3
Python3.4 works, but 2.7 returns a tuple from os.uname().
2020-08-24 20:05:32 +02:00
Zbigniew Jędrzejewski-Szmek d75615f398 nspawn: turn on higher optimization level in seccomp
$ sudo ./dump_seccomp_filter $PIDOF_NSPAWN_PAYLOAD obj
$ ~/src/libseccomp/build/tools/scmp_bpf_disasm <obj

Before the addition of @known to filter:
 line  OP   JT   JF   K
=================================
 0000: 0x20 0x00 0x00 0x00000004   ld  $data[4]
 0001: 0x15 0x00 0x6d 0x40000003   jeq 1073741827 true:0002 false:0111
 0002: 0x20 0x00 0x00 0x00000000   ld  $data[0]
 0003: 0x15 0x6b 0x00 0x00000000   jeq 0    true:0111 false:0004
 0004: 0x15 0x6a 0x00 0x00000001   jeq 1    true:0111 false:0005
 0005: 0x15 0x69 0x00 0x00000002   jeq 2    true:0111 false:0006
 0006: 0x15 0x68 0x00 0x00000003   jeq 3    true:0111 false:0007
 0007: 0x15 0x67 0x00 0x00000004   jeq 4    true:0111 false:0008
 0008: 0x15 0x66 0x00 0x00000005   jeq 5    true:0111 false:0009
 0009: 0x15 0x65 0x00 0x00000006   jeq 6    true:0111 false:0010
 0010: 0x15 0x64 0x00 0x00000007   jeq 7    true:0111 false:0011
 0011: 0x15 0x63 0x00 0x00000008   jeq 8    true:0111 false:0012
 0012: 0x15 0x62 0x00 0x00000009   jeq 9    true:0111 false:0013
 0013: 0x15 0x61 0x00 0x0000000a   jeq 10   true:0111 false:0014
 0014: 0x15 0x60 0x00 0x0000000b   jeq 11   true:0111 false:0015
 0015: 0x15 0x5f 0x00 0x0000000c   jeq 12   true:0111 false:0016
 0016: 0x15 0x5e 0x00 0x0000000d   jeq 13   true:0111 false:0017
 0017: 0x15 0x5d 0x00 0x0000000e   jeq 14   true:0111 false:0018
 0018: 0x15 0x5c 0x00 0x0000000f   jeq 15   true:0111 false:0019
 0019: 0x15 0x5b 0x00 0x00000010   jeq 16   true:0111 false:0020
 0020: 0x15 0x5a 0x00 0x00000012   jeq 18   true:0111 false:0021
 0021: 0x15 0x59 0x00 0x00000013   jeq 19   true:0111 false:0022
 0022: 0x15 0x58 0x00 0x00000014   jeq 20   true:0111 false:0023
 0023: 0x15 0x57 0x00 0x00000015   jeq 21   true:0111 false:0024
 0024: 0x15 0x56 0x00 0x00000016   jeq 22   true:0111 false:0025
 0025: 0x15 0x55 0x00 0x00000017   jeq 23   true:0111 false:0026
 0026: 0x15 0x54 0x00 0x00000018   jeq 24   true:0111 false:0027
 0027: 0x15 0x53 0x00 0x0000001a   jeq 26   true:0111 false:0028
 0028: 0x15 0x52 0x00 0x0000001b   jeq 27   true:0111 false:0029
 0029: 0x15 0x51 0x00 0x0000001c   jeq 28   true:0111 false:0030
 0030: 0x15 0x50 0x00 0x0000001d   jeq 29   true:0111 false:0031
 0031: 0x15 0x4f 0x00 0x0000001e   jeq 30   true:0111 false:0032
 0032: 0x15 0x4e 0x00 0x00000021   jeq 33   true:0111 false:0033
 0033: 0x15 0x4d 0x00 0x00000022   jeq 34   true:0111 false:0034
 0034: 0x15 0x4c 0x00 0x00000024   jeq 36   true:0111 false:0035
 0035: 0x15 0x4b 0x00 0x00000025   jeq 37   true:0111 false:0036
 0036: 0x15 0x4a 0x00 0x00000026   jeq 38   true:0111 false:0037
 0037: 0x15 0x49 0x00 0x00000027   jeq 39   true:0111 false:0038
 0038: 0x15 0x48 0x00 0x00000028   jeq 40   true:0111 false:0039
 0039: 0x15 0x47 0x00 0x00000029   jeq 41   true:0111 false:0040
 0040: 0x15 0x46 0x00 0x0000002a   jeq 42   true:0111 false:0041
 0041: 0x15 0x45 0x00 0x0000002b   jeq 43   true:0111 false:0042
 0042: 0x15 0x44 0x00 0x0000002d   jeq 45   true:0111 false:0043
 0043: 0x15 0x43 0x00 0x0000002e   jeq 46   true:0111 false:0044
 0044: 0x15 0x42 0x00 0x0000002f   jeq 47   true:0111 false:0045
 0045: 0x15 0x41 0x00 0x00000030   jeq 48   true:0111 false:0046
 0046: 0x15 0x40 0x00 0x00000031   jeq 49   true:0111 false:0047
 0047: 0x15 0x3f 0x00 0x00000032   jeq 50   true:0111 false:0048
 0048: 0x15 0x3e 0x00 0x00000034   jeq 52   true:0111 false:0049
 0049: 0x15 0x3d 0x00 0x00000036   jeq 54   true:0111 false:0050
 0050: 0x15 0x3c 0x00 0x00000037   jeq 55   true:0111 false:0051
 0051: 0x15 0x3b 0x00 0x00000039   jeq 57   true:0111 false:0052
 0052: 0x15 0x3a 0x00 0x0000003b   jeq 59   true:0111 false:0053
 0053: 0x15 0x39 0x00 0x0000003c   jeq 60   true:0111 false:0054
 0054: 0x15 0x38 0x00 0x0000003d   jeq 61   true:0111 false:0055
 0055: 0x15 0x37 0x00 0x0000003f   jeq 63   true:0111 false:0056
 0056: 0x15 0x36 0x00 0x00000040   jeq 64   true:0111 false:0057
 0057: 0x15 0x35 0x00 0x00000041   jeq 65   true:0111 false:0058
 0058: 0x15 0x34 0x00 0x00000042   jeq 66   true:0111 false:0059
 0059: 0x15 0x33 0x00 0x00000043   jeq 67   true:0111 false:0060
 0060: 0x15 0x32 0x00 0x00000046   jeq 70   true:0111 false:0061
 0061: 0x15 0x31 0x00 0x00000047   jeq 71   true:0111 false:0062
 0062: 0x15 0x30 0x00 0x00000048   jeq 72   true:0111 false:0063
 0063: 0x15 0x2f 0x00 0x00000049   jeq 73   true:0111 false:0064
 0064: 0x15 0x2e 0x00 0x0000004a   jeq 74   true:0111 false:0065
 0065: 0x15 0x2d 0x00 0x0000004b   jeq 75   true:0111 false:0066
 0066: 0x15 0x2c 0x00 0x0000004c   jeq 76   true:0111 false:0067
 0067: 0x15 0x2b 0x00 0x0000004d   jeq 77   true:0111 false:0068
 0068: 0x15 0x2a 0x00 0x0000004e   jeq 78   true:0111 false:0069
 0069: 0x15 0x29 0x00 0x00000050   jeq 80   true:0111 false:0070
 0070: 0x15 0x28 0x00 0x00000051   jeq 81   true:0111 false:0071
 0071: 0x15 0x27 0x00 0x00000052   jeq 82   true:0111 false:0072
 0072: 0x15 0x26 0x00 0x00000053   jeq 83   true:0111 false:0073
 0073: 0x15 0x25 0x00 0x00000054   jeq 84   true:0111 false:0074
 0074: 0x15 0x24 0x00 0x00000055   jeq 85   true:0111 false:0075
 0075: 0x15 0x23 0x00 0x00000058   jeq 88   true:0111 false:0076
 0076: 0x15 0x22 0x00 0x00000059   jeq 89   true:0111 false:0077
 0077: 0x15 0x21 0x00 0x0000005a   jeq 90   true:0111 false:0078
 0078: 0x15 0x20 0x00 0x0000005b   jeq 91   true:0111 false:0079
 0079: 0x15 0x1f 0x00 0x0000005c   jeq 92   true:0111 false:0080
 0080: 0x15 0x1e 0x00 0x0000005d   jeq 93   true:0111 false:0081
 0081: 0x15 0x1d 0x00 0x0000005e   jeq 94   true:0111 false:0082
 0082: 0x15 0x1c 0x00 0x0000005f   jeq 95   true:0111 false:0083
 0083: 0x15 0x1b 0x00 0x00000060   jeq 96   true:0111 false:0084
 0084: 0x15 0x1a 0x00 0x00000061   jeq 97   true:0111 false:0085
 0085: 0x15 0x19 0x00 0x00000063   jeq 99   true:0111 false:0086
 0086: 0x15 0x18 0x00 0x00000064   jeq 100  true:0111 false:0087
 0087: 0x15 0x17 0x00 0x00000066   jeq 102  true:0111 false:0088
 0088: 0x15 0x16 0x00 0x00000068   jeq 104  true:0111 false:0089
 0089: 0x15 0x15 0x00 0x00000069   jeq 105  true:0111 false:0090
 0090: 0x15 0x14 0x00 0x0000006a   jeq 106  true:0111 false:0091
 0091: 0x15 0x13 0x00 0x0000006b   jeq 107  true:0111 false:0092
 0092: 0x15 0x12 0x00 0x0000006c   jeq 108  true:0111 false:0093
 0093: 0x15 0x11 0x00 0x0000006d   jeq 109  true:0111 false:0094
 0094: 0x15 0x10 0x00 0x0000006f   jeq 111  true:0111 false:0095
 0095: 0x15 0x0f 0x00 0x00000072   jeq 114  true:0111 false:0096
 0096: 0x15 0x0e 0x00 0x00000074   jeq 116  true:0111 false:0097
 0097: 0x15 0x0d 0x00 0x00000075   jeq 117  true:0111 false:0098
 0098: 0x15 0x0c 0x00 0x00000076   jeq 118  true:0111 false:0099
 0099: 0x15 0x0b 0x00 0x00000077   jeq 119  true:0111 false:0100
 0100: 0x15 0x0a 0x00 0x00000078   jeq 120  true:0111 false:0101
 0101: 0x15 0x09 0x00 0x00000079   jeq 121  true:0111 false:0102
 0102: 0x15 0x08 0x00 0x0000007a   jeq 122  true:0111 false:0103
 0103: 0x15 0x07 0x00 0x0000007d   jeq 125  true:0111 false:0104
 0104: 0x15 0x06 0x00 0x0000007e   jeq 126  true:0111 false:0105
 0105: 0x15 0x05 0x00 0x00000084   jeq 132  true:0111 false:0106
 0106: 0x15 0x04 0x00 0x00000085   jeq 133  true:0111 false:0107
 0107: 0x15 0x03 0x00 0x00000088   jeq 136  true:0111 false:0108
 0108: 0x15 0x02 0x00 0x0000008a   jeq 138  true:0111 false:0109
 0109: 0x15 0x01 0x00 0x0000008b   jeq 139  true:0111 false:0110
 0110: 0x15 0x00 0x01 0x0000008c   jeq 140  true:0111 false:0112
 0111: 0x06 0x00 0x00 0x7fff0000   ret ALLOW
 0112: 0x15 0xff 0x00 0x0000008d   jeq 141  true:0368 false:0113
 0113: 0x15 0xfe 0x00 0x0000008e   jeq 142  true:0368 false:0114
 0114: 0x15 0xfd 0x00 0x0000008f   jeq 143  true:0368 false:0115
 0115: 0x15 0xfc 0x00 0x00000090   jeq 144  true:0368 false:0116
 0116: 0x15 0xfb 0x00 0x00000091   jeq 145  true:0368 false:0117
 0117: 0x15 0xfa 0x00 0x00000092   jeq 146  true:0368 false:0118
 0118: 0x15 0xf9 0x00 0x00000093   jeq 147  true:0368 false:0119
 0119: 0x15 0xf8 0x00 0x00000094   jeq 148  true:0368 false:0120
 0120: 0x15 0xf7 0x00 0x0000009a   jeq 154  true:0368 false:0121
 0121: 0x15 0xf6 0x00 0x0000009b   jeq 155  true:0368 false:0122
 0122: 0x15 0xf5 0x00 0x0000009c   jeq 156  true:0368 false:0123
 0123: 0x15 0xf4 0x00 0x0000009d   jeq 157  true:0368 false:0124
 0124: 0x15 0xf3 0x00 0x0000009e   jeq 158  true:0368 false:0125
 0125: 0x15 0xf2 0x00 0x0000009f   jeq 159  true:0368 false:0126
 0126: 0x15 0xf1 0x00 0x000000a0   jeq 160  true:0368 false:0127
 0127: 0x15 0xf0 0x00 0x000000a1   jeq 161  true:0368 false:0128
 0128: 0x15 0xef 0x00 0x000000a2   jeq 162  true:0368 false:0129
 0129: 0x15 0xee 0x00 0x000000a3   jeq 163  true:0368 false:0130
 0130: 0x15 0xed 0x00 0x000000a4   jeq 164  true:0368 false:0131
 0131: 0x15 0xec 0x00 0x000000a5   jeq 165  true:0368 false:0132
 0132: 0x15 0xeb 0x00 0x000000a8   jeq 168  true:0368 false:0133
 0133: 0x15 0xea 0x00 0x000000aa   jeq 170  true:0368 false:0134
 0134: 0x15 0xe9 0x00 0x000000ab   jeq 171  true:0368 false:0135
 0135: 0x15 0xe8 0x00 0x000000ac   jeq 172  true:0368 false:0136
 0136: 0x15 0xe7 0x00 0x000000ad   jeq 173  true:0368 false:0137
 0137: 0x15 0xe6 0x00 0x000000ae   jeq 174  true:0368 false:0138
 0138: 0x15 0xe5 0x00 0x000000af   jeq 175  true:0368 false:0139
 0139: 0x15 0xe4 0x00 0x000000b0   jeq 176  true:0368 false:0140
 0140: 0x15 0xe3 0x00 0x000000b1   jeq 177  true:0368 false:0141
 0141: 0x15 0xe2 0x00 0x000000b2   jeq 178  true:0368 false:0142
 0142: 0x15 0xe1 0x00 0x000000b3   jeq 179  true:0368 false:0143
 0143: 0x15 0xe0 0x00 0x000000b4   jeq 180  true:0368 false:0144
 0144: 0x15 0xdf 0x00 0x000000b5   jeq 181  true:0368 false:0145
 0145: 0x15 0xde 0x00 0x000000b6   jeq 182  true:0368 false:0146
 0146: 0x15 0xdd 0x00 0x000000b7   jeq 183  true:0368 false:0147
 0147: 0x15 0xdc 0x00 0x000000b8   jeq 184  true:0368 false:0148
 0148: 0x15 0xdb 0x00 0x000000b9   jeq 185  true:0368 false:0149
 0149: 0x15 0xda 0x00 0x000000ba   jeq 186  true:0368 false:0150
 0150: 0x15 0xd9 0x00 0x000000bb   jeq 187  true:0368 false:0151
 0151: 0x15 0xd8 0x00 0x000000be   jeq 190  true:0368 false:0152
 0152: 0x15 0xd7 0x00 0x000000bf   jeq 191  true:0368 false:0153
 0153: 0x15 0xd6 0x00 0x000000c0   jeq 192  true:0368 false:0154
 0154: 0x15 0xd5 0x00 0x000000c1   jeq 193  true:0368 false:0155
 0155: 0x15 0xd4 0x00 0x000000c2   jeq 194  true:0368 false:0156
 0156: 0x15 0xd3 0x00 0x000000c3   jeq 195  true:0368 false:0157
 0157: 0x15 0xd2 0x00 0x000000c4   jeq 196  true:0368 false:0158
 0158: 0x15 0xd1 0x00 0x000000c5   jeq 197  true:0368 false:0159
 0159: 0x15 0xd0 0x00 0x000000c6   jeq 198  true:0368 false:0160
 0160: 0x15 0xcf 0x00 0x000000c7   jeq 199  true:0368 false:0161
 0161: 0x15 0xce 0x00 0x000000c8   jeq 200  true:0368 false:0162
 0162: 0x15 0xcd 0x00 0x000000c9   jeq 201  true:0368 false:0163
 0163: 0x15 0xcc 0x00 0x000000ca   jeq 202  true:0368 false:0164
 0164: 0x15 0xcb 0x00 0x000000cb   jeq 203  true:0368 false:0165
 0165: 0x15 0xca 0x00 0x000000cc   jeq 204  true:0368 false:0166
 0166: 0x15 0xc9 0x00 0x000000cd   jeq 205  true:0368 false:0167
 0167: 0x15 0xc8 0x00 0x000000ce   jeq 206  true:0368 false:0168
 0168: 0x15 0xc7 0x00 0x000000cf   jeq 207  true:0368 false:0169
 0169: 0x15 0xc6 0x00 0x000000d0   jeq 208  true:0368 false:0170
 0170: 0x15 0xc5 0x00 0x000000d1   jeq 209  true:0368 false:0171
 0171: 0x15 0xc4 0x00 0x000000d2   jeq 210  true:0368 false:0172
 0172: 0x15 0xc3 0x00 0x000000d3   jeq 211  true:0368 false:0173
 0173: 0x15 0xc2 0x00 0x000000d4   jeq 212  true:0368 false:0174
 0174: 0x15 0xc1 0x00 0x000000d5   jeq 213  true:0368 false:0175
 0175: 0x15 0xc0 0x00 0x000000d6   jeq 214  true:0368 false:0176
 0176: 0x15 0xbf 0x00 0x000000d7   jeq 215  true:0368 false:0177
 0177: 0x15 0xbe 0x00 0x000000d8   jeq 216  true:0368 false:0178
 0178: 0x15 0xbd 0x00 0x000000d9   jeq 217  true:0368 false:0179
 0179: 0x15 0xbc 0x00 0x000000da   jeq 218  true:0368 false:0180
 0180: 0x15 0xbb 0x00 0x000000db   jeq 219  true:0368 false:0181
 0181: 0x15 0xba 0x00 0x000000dc   jeq 220  true:0368 false:0182
 0182: 0x15 0xb9 0x00 0x000000dd   jeq 221  true:0368 false:0183
 0183: 0x15 0xb8 0x00 0x000000e0   jeq 224  true:0368 false:0184
 0184: 0x15 0xb7 0x00 0x000000e1   jeq 225  true:0368 false:0185
 0185: 0x15 0xb6 0x00 0x000000e2   jeq 226  true:0368 false:0186
 0186: 0x15 0xb5 0x00 0x000000e3   jeq 227  true:0368 false:0187
 0187: 0x15 0xb4 0x00 0x000000e4   jeq 228  true:0368 false:0188
 0188: 0x15 0xb3 0x00 0x000000e5   jeq 229  true:0368 false:0189
 0189: 0x15 0xb2 0x00 0x000000e6   jeq 230  true:0368 false:0190
 0190: 0x15 0xb1 0x00 0x000000e7   jeq 231  true:0368 false:0191
 0191: 0x15 0xb0 0x00 0x000000e8   jeq 232  true:0368 false:0192
 0192: 0x15 0xaf 0x00 0x000000e9   jeq 233  true:0368 false:0193
 0193: 0x15 0xae 0x00 0x000000ea   jeq 234  true:0368 false:0194
 0194: 0x15 0xad 0x00 0x000000eb   jeq 235  true:0368 false:0195
 0195: 0x15 0xac 0x00 0x000000ec   jeq 236  true:0368 false:0196
 0196: 0x15 0xab 0x00 0x000000ed   jeq 237  true:0368 false:0197
 0197: 0x15 0xaa 0x00 0x000000ee   jeq 238  true:0368 false:0198
 0198: 0x15 0xa9 0x00 0x000000ef   jeq 239  true:0368 false:0199
 0199: 0x15 0xa8 0x00 0x000000f0   jeq 240  true:0368 false:0200
 0200: 0x15 0xa7 0x00 0x000000f1   jeq 241  true:0368 false:0201
 0201: 0x15 0xa6 0x00 0x000000f2   jeq 242  true:0368 false:0202
 0202: 0x15 0xa5 0x00 0x000000f3   jeq 243  true:0368 false:0203
 0203: 0x15 0xa4 0x00 0x000000f4   jeq 244  true:0368 false:0204
 0204: 0x15 0xa3 0x00 0x000000f5   jeq 245  true:0368 false:0205
 0205: 0x15 0xa2 0x00 0x000000f6   jeq 246  true:0368 false:0206
 0206: 0x15 0xa1 0x00 0x000000f7   jeq 247  true:0368 false:0207
 0207: 0x15 0xa0 0x00 0x000000f8   jeq 248  true:0368 false:0208
 0208: 0x15 0x9f 0x00 0x000000f9   jeq 249  true:0368 false:0209
 0209: 0x15 0x9e 0x00 0x000000fa   jeq 250  true:0368 false:0210
 0210: 0x15 0x9d 0x00 0x000000fc   jeq 252  true:0368 false:0211
 0211: 0x15 0x9c 0x00 0x000000fe   jeq 254  true:0368 false:0212
 0212: 0x15 0x9b 0x00 0x000000ff   jeq 255  true:0368 false:0213
 0213: 0x15 0x9a 0x00 0x00000100   jeq 256  true:0368 false:0214
 0214: 0x15 0x99 0x00 0x00000101   jeq 257  true:0368 false:0215
 0215: 0x15 0x98 0x00 0x00000102   jeq 258  true:0368 false:0216
 0216: 0x15 0x97 0x00 0x00000103   jeq 259  true:0368 false:0217
 0217: 0x15 0x96 0x00 0x00000104   jeq 260  true:0368 false:0218
 0218: 0x15 0x95 0x00 0x00000105   jeq 261  true:0368 false:0219
 0219: 0x15 0x94 0x00 0x00000106   jeq 262  true:0368 false:0220
 0220: 0x15 0x93 0x00 0x00000107   jeq 263  true:0368 false:0221
 0221: 0x15 0x92 0x00 0x00000109   jeq 265  true:0368 false:0222
 0222: 0x15 0x91 0x00 0x0000010a   jeq 266  true:0368 false:0223
 0223: 0x15 0x90 0x00 0x0000010b   jeq 267  true:0368 false:0224
 0224: 0x15 0x8f 0x00 0x0000010c   jeq 268  true:0368 false:0225
 0225: 0x15 0x8e 0x00 0x0000010d   jeq 269  true:0368 false:0226
 0226: 0x15 0x8d 0x00 0x0000010e   jeq 270  true:0368 false:0227
 0227: 0x15 0x8c 0x00 0x0000010f   jeq 271  true:0368 false:0228
 0228: 0x15 0x8b 0x00 0x00000110   jeq 272  true:0368 false:0229
 0229: 0x15 0x8a 0x00 0x00000112   jeq 274  true:0368 false:0230
 0230: 0x15 0x89 0x00 0x00000113   jeq 275  true:0368 false:0231
 0231: 0x15 0x88 0x00 0x00000114   jeq 276  true:0368 false:0232
 0232: 0x15 0x87 0x00 0x00000115   jeq 277  true:0368 false:0233
 0233: 0x15 0x86 0x00 0x00000116   jeq 278  true:0368 false:0234
 0234: 0x15 0x85 0x00 0x00000117   jeq 279  true:0368 false:0235
 0235: 0x15 0x84 0x00 0x00000118   jeq 280  true:0368 false:0236
 0236: 0x15 0x83 0x00 0x00000119   jeq 281  true:0368 false:0237
 0237: 0x15 0x82 0x00 0x0000011a   jeq 282  true:0368 false:0238
 0238: 0x15 0x81 0x00 0x0000011c   jeq 284  true:0368 false:0239
 0239: 0x15 0x80 0x00 0x00000121   jeq 289  true:0368 false:0240
 0240: 0x15 0x7f 0x00 0x00000122   jeq 290  true:0368 false:0241
 0241: 0x15 0x7e 0x00 0x00000123   jeq 291  true:0368 false:0242
 0242: 0x15 0x7d 0x00 0x00000124   jeq 292  true:0368 false:0243
 0243: 0x15 0x7c 0x00 0x00000125   jeq 293  true:0368 false:0244
 0244: 0x15 0x7b 0x00 0x00000126   jeq 294  true:0368 false:0245
 0245: 0x15 0x7a 0x00 0x00000127   jeq 295  true:0368 false:0246
 0246: 0x15 0x79 0x00 0x00000128   jeq 296  true:0368 false:0247
 0247: 0x15 0x78 0x00 0x00000129   jeq 297  true:0368 false:0248
 0248: 0x15 0x77 0x00 0x0000012a   jeq 298  true:0368 false:0249
 0249: 0x15 0x76 0x00 0x0000012b   jeq 299  true:0368 false:0250
 0250: 0x15 0x75 0x00 0x0000012c   jeq 300  true:0368 false:0251
 0251: 0x15 0x74 0x00 0x0000012d   jeq 301  true:0368 false:0252
 0252: 0x15 0x73 0x00 0x0000012e   jeq 302  true:0368 false:0253
 0253: 0x15 0x72 0x00 0x0000012f   jeq 303  true:0368 false:0254
 0254: 0x15 0x71 0x00 0x00000130   jeq 304  true:0368 false:0255
 0255: 0x15 0x70 0x00 0x00000131   jeq 305  true:0368 false:0256
 0256: 0x15 0x6f 0x00 0x00000132   jeq 306  true:0368 false:0257
 0257: 0x15 0x6e 0x00 0x00000133   jeq 307  true:0368 false:0258
 0258: 0x15 0x6d 0x00 0x00000134   jeq 308  true:0368 false:0259
 0259: 0x15 0x6c 0x00 0x00000135   jeq 309  true:0368 false:0260
 0260: 0x15 0x6b 0x00 0x00000136   jeq 310  true:0368 false:0261
 0261: 0x15 0x6a 0x00 0x00000137   jeq 311  true:0368 false:0262
 0262: 0x15 0x69 0x00 0x00000138   jeq 312  true:0368 false:0263
 0263: 0x15 0x68 0x00 0x00000139   jeq 313  true:0368 false:0264
 0264: 0x15 0x67 0x00 0x0000013a   jeq 314  true:0368 false:0265
 0265: 0x15 0x66 0x00 0x0000013b   jeq 315  true:0368 false:0266
 0266: 0x15 0x65 0x00 0x0000013c   jeq 316  true:0368 false:0267
 0267: 0x15 0x64 0x00 0x0000013d   jeq 317  true:0368 false:0268
 0268: 0x15 0x63 0x00 0x0000013e   jeq 318  true:0368 false:0269
 0269: 0x15 0x62 0x00 0x0000013f   jeq 319  true:0368 false:0270
 0270: 0x15 0x61 0x00 0x00000140   jeq 320  true:0368 false:0271
 0271: 0x15 0x60 0x00 0x00000141   jeq 321  true:0368 false:0272
 0272: 0x15 0x5f 0x00 0x00000142   jeq 322  true:0368 false:0273
 0273: 0x15 0x5e 0x00 0x00000143   jeq 323  true:0368 false:0274
 0274: 0x15 0x5d 0x00 0x00000144   jeq 324  true:0368 false:0275
 0275: 0x15 0x5c 0x00 0x00000145   jeq 325  true:0368 false:0276
 0276: 0x15 0x5b 0x00 0x00000146   jeq 326  true:0368 false:0277
 0277: 0x15 0x5a 0x00 0x00000147   jeq 327  true:0368 false:0278
 0278: 0x15 0x59 0x00 0x00000148   jeq 328  true:0368 false:0279
 0279: 0x15 0x58 0x00 0x00000149   jeq 329  true:0368 false:0280
 0280: 0x15 0x57 0x00 0x0000014a   jeq 330  true:0368 false:0281
 0281: 0x15 0x56 0x00 0x0000014b   jeq 331  true:0368 false:0282
 0282: 0x15 0x55 0x00 0x0000014c   jeq 332  true:0368 false:0283
 0283: 0x15 0x54 0x00 0x0000014d   jeq 333  true:0368 false:0284
 0284: 0x15 0x53 0x00 0x0000014e   jeq 334  true:0368 false:0285
 0285: 0x15 0x52 0x00 0x0000014f   jeq 335  true:0368 false:0286
 0286: 0x15 0x51 0x00 0x00000151   jeq 337  true:0368 false:0287
 0287: 0x15 0x50 0x00 0x00000154   jeq 340  true:0368 false:0288
 0288: 0x15 0x4f 0x00 0x00000155   jeq 341  true:0368 false:0289
 0289: 0x15 0x4e 0x00 0x00000158   jeq 344  true:0368 false:0290
 0290: 0x15 0x4d 0x00 0x00000159   jeq 345  true:0368 false:0291
 0291: 0x15 0x4c 0x00 0x0000015a   jeq 346  true:0368 false:0292
 0292: 0x15 0x4b 0x00 0x0000015b   jeq 347  true:0368 false:0293
 0293: 0x15 0x4a 0x00 0x0000015c   jeq 348  true:0368 false:0294
 0294: 0x15 0x49 0x00 0x0000015d   jeq 349  true:0368 false:0295
 0295: 0x15 0x48 0x00 0x0000015f   jeq 351  true:0368 false:0296
 0296: 0x15 0x47 0x00 0x00000160   jeq 352  true:0368 false:0297
 0297: 0x15 0x46 0x00 0x00000161   jeq 353  true:0368 false:0298
 0298: 0x15 0x45 0x00 0x00000162   jeq 354  true:0368 false:0299
 0299: 0x15 0x44 0x00 0x00000163   jeq 355  true:0368 false:0300
 0300: 0x15 0x43 0x00 0x00000164   jeq 356  true:0368 false:0301
 0301: 0x15 0x42 0x00 0x00000166   jeq 358  true:0368 false:0302
 0302: 0x15 0x41 0x00 0x00000167   jeq 359  true:0368 false:0303
 0303: 0x15 0x40 0x00 0x00000168   jeq 360  true:0368 false:0304
 0304: 0x15 0x3f 0x00 0x00000169   jeq 361  true:0368 false:0305
 0305: 0x15 0x3e 0x00 0x0000016a   jeq 362  true:0368 false:0306
 0306: 0x15 0x3d 0x00 0x0000016b   jeq 363  true:0368 false:0307
 0307: 0x15 0x3c 0x00 0x0000016c   jeq 364  true:0368 false:0308
 0308: 0x15 0x3b 0x00 0x0000016d   jeq 365  true:0368 false:0309
 0309: 0x15 0x3a 0x00 0x0000016e   jeq 366  true:0368 false:0310
 0310: 0x15 0x39 0x00 0x0000016f   jeq 367  true:0368 false:0311
 0311: 0x15 0x38 0x00 0x00000170   jeq 368  true:0368 false:0312
 0312: 0x15 0x37 0x00 0x00000171   jeq 369  true:0368 false:0313
 0313: 0x15 0x36 0x00 0x00000172   jeq 370  true:0368 false:0314
 0314: 0x15 0x35 0x00 0x00000173   jeq 371  true:0368 false:0315
 0315: 0x15 0x34 0x00 0x00000174   jeq 372  true:0368 false:0316
 0316: 0x15 0x33 0x00 0x00000175   jeq 373  true:0368 false:0317
 0317: 0x15 0x32 0x00 0x00000176   jeq 374  true:0368 false:0318
 0318: 0x15 0x31 0x00 0x00000177   jeq 375  true:0368 false:0319
 0319: 0x15 0x30 0x00 0x00000179   jeq 377  true:0368 false:0320
 0320: 0x15 0x2f 0x00 0x0000017a   jeq 378  true:0368 false:0321
 0321: 0x15 0x2e 0x00 0x0000017b   jeq 379  true:0368 false:0322
 0322: 0x15 0x2d 0x00 0x0000017f   jeq 383  true:0368 false:0323
 0323: 0x15 0x2c 0x00 0x00000180   jeq 384  true:0368 false:0324
 0324: 0x15 0x2b 0x00 0x00000181   jeq 385  true:0368 false:0325
 0325: 0x15 0x2a 0x00 0x00000182   jeq 386  true:0368 false:0326
 0326: 0x15 0x29 0x00 0x00000189   jeq 393  true:0368 false:0327
 0327: 0x15 0x28 0x00 0x0000018a   jeq 394  true:0368 false:0328
 0328: 0x15 0x27 0x00 0x0000018b   jeq 395  true:0368 false:0329
 0329: 0x15 0x26 0x00 0x0000018c   jeq 396  true:0368 false:0330
 0330: 0x15 0x25 0x00 0x0000018d   jeq 397  true:0368 false:0331
 0331: 0x15 0x24 0x00 0x0000018e   jeq 398  true:0368 false:0332
 0332: 0x15 0x23 0x00 0x0000018f   jeq 399  true:0368 false:0333
 0333: 0x15 0x22 0x00 0x00000190   jeq 400  true:0368 false:0334
 0334: 0x15 0x21 0x00 0x00000191   jeq 401  true:0368 false:0335
 0335: 0x15 0x20 0x00 0x00000192   jeq 402  true:0368 false:0336
 0336: 0x15 0x1f 0x00 0x00000193   jeq 403  true:0368 false:0337
 0337: 0x15 0x1e 0x00 0x00000196   jeq 406  true:0368 false:0338
 0338: 0x15 0x1d 0x00 0x00000197   jeq 407  true:0368 false:0339
 0339: 0x15 0x1c 0x00 0x00000198   jeq 408  true:0368 false:0340
 0340: 0x15 0x1b 0x00 0x00000199   jeq 409  true:0368 false:0341
 0341: 0x15 0x1a 0x00 0x0000019a   jeq 410  true:0368 false:0342
 0342: 0x15 0x19 0x00 0x0000019b   jeq 411  true:0368 false:0343
 0343: 0x15 0x18 0x00 0x0000019c   jeq 412  true:0368 false:0344
 0344: 0x15 0x17 0x00 0x0000019d   jeq 413  true:0368 false:0345
 0345: 0x15 0x16 0x00 0x0000019e   jeq 414  true:0368 false:0346
 0346: 0x15 0x15 0x00 0x000001a0   jeq 416  true:0368 false:0347
 0347: 0x15 0x14 0x00 0x000001a1   jeq 417  true:0368 false:0348
 0348: 0x15 0x13 0x00 0x000001a2   jeq 418  true:0368 false:0349
 0349: 0x15 0x12 0x00 0x000001a3   jeq 419  true:0368 false:0350
 0350: 0x15 0x11 0x00 0x000001a4   jeq 420  true:0368 false:0351
 0351: 0x15 0x10 0x00 0x000001a5   jeq 421  true:0368 false:0352
 0352: 0x15 0x0f 0x00 0x000001a6   jeq 422  true:0368 false:0353
 0353: 0x15 0x0e 0x00 0x000001a8   jeq 424  true:0368 false:0354
 0354: 0x15 0x0d 0x00 0x000001a9   jeq 425  true:0368 false:0355
 0355: 0x15 0x0c 0x00 0x000001aa   jeq 426  true:0368 false:0356
 0356: 0x15 0x0b 0x00 0x000001ab   jeq 427  true:0368 false:0357
 0357: 0x15 0x0a 0x00 0x000001ac   jeq 428  true:0368 false:0358
 0358: 0x15 0x09 0x00 0x000001ad   jeq 429  true:0368 false:0359
 0359: 0x15 0x08 0x00 0x000001ae   jeq 430  true:0368 false:0360
 0360: 0x15 0x07 0x00 0x000001af   jeq 431  true:0368 false:0361
 0361: 0x15 0x06 0x00 0x000001b0   jeq 432  true:0368 false:0362
 0362: 0x15 0x05 0x00 0x000001b1   jeq 433  true:0368 false:0363
 0363: 0x15 0x04 0x00 0x000001b2   jeq 434  true:0368 false:0364
 0364: 0x15 0x03 0x00 0x000001b3   jeq 435  true:0368 false:0365
 0365: 0x15 0x02 0x00 0x000001b5   jeq 437  true:0368 false:0366
 0366: 0x15 0x01 0x00 0x000001b7   jeq 439  true:0368 false:0367
 0367: 0x06 0x00 0x00 0x00050001   ret ERRNO(1)
 0368: 0x06 0x00 0x00 0x7fff0000   ret ALLOW

After the addition of @known:
 line  OP   JT   JF   K
=================================
 0000: 0x20 0x00 0x00 0x00000004   ld  $data[4]
 0001: 0x15 0x00 0xa4 0x40000003   jeq 1073741827 true:0002 false:0166
 0002: 0x20 0x00 0x00 0x00000000   ld  $data[0]
 0003: 0x15 0xa2 0x00 0x00000000   jeq 0    true:0166 false:0004
 0004: 0x15 0xa1 0x00 0x00000001   jeq 1    true:0166 false:0005
 0005: 0x15 0xa0 0x00 0x00000002   jeq 2    true:0166 false:0006
 0006: 0x15 0x9f 0x00 0x00000003   jeq 3    true:0166 false:0007
 0007: 0x15 0x9e 0x00 0x00000004   jeq 4    true:0166 false:0008
 0008: 0x15 0x9d 0x00 0x00000005   jeq 5    true:0166 false:0009
 0009: 0x15 0x9c 0x00 0x00000006   jeq 6    true:0166 false:0010
 0010: 0x15 0x9b 0x00 0x00000007   jeq 7    true:0166 false:0011
 0011: 0x15 0x9a 0x00 0x00000008   jeq 8    true:0166 false:0012
 0012: 0x15 0x99 0x00 0x00000009   jeq 9    true:0166 false:0013
 0013: 0x15 0x98 0x00 0x0000000a   jeq 10   true:0166 false:0014
 0014: 0x15 0x97 0x00 0x0000000b   jeq 11   true:0166 false:0015
 0015: 0x15 0x96 0x00 0x0000000c   jeq 12   true:0166 false:0016
 0016: 0x15 0x95 0x00 0x0000000d   jeq 13   true:0166 false:0017
 0017: 0x15 0x94 0x00 0x0000000e   jeq 14   true:0166 false:0018
 0018: 0x15 0x93 0x00 0x0000000f   jeq 15   true:0166 false:0019
 0019: 0x15 0x92 0x00 0x00000010   jeq 16   true:0166 false:0020
 0020: 0x15 0x91 0x00 0x00000012   jeq 18   true:0166 false:0021
 0021: 0x15 0x90 0x00 0x00000013   jeq 19   true:0166 false:0022
 0022: 0x15 0x8f 0x00 0x00000014   jeq 20   true:0166 false:0023
 0023: 0x15 0x8e 0x00 0x00000015   jeq 21   true:0166 false:0024
 0024: 0x15 0x8d 0x00 0x00000016   jeq 22   true:0166 false:0025
 0025: 0x15 0x8c 0x00 0x00000017   jeq 23   true:0166 false:0026
 0026: 0x15 0x8b 0x00 0x00000018   jeq 24   true:0166 false:0027
 0027: 0x15 0x87 0x00 0x00000019   jeq 25   true:0163 false:0028
 0028: 0x15 0x89 0x00 0x0000001a   jeq 26   true:0166 false:0029
 0029: 0x15 0x88 0x00 0x0000001b   jeq 27   true:0166 false:0030
 0030: 0x15 0x87 0x00 0x0000001c   jeq 28   true:0166 false:0031
 0031: 0x15 0x86 0x00 0x0000001d   jeq 29   true:0166 false:0032
 0032: 0x15 0x85 0x00 0x0000001e   jeq 30   true:0166 false:0033
 0033: 0x15 0x84 0x00 0x00000021   jeq 33   true:0166 false:0034
 0034: 0x15 0x83 0x00 0x00000022   jeq 34   true:0166 false:0035
 0035: 0x15 0x82 0x00 0x00000024   jeq 36   true:0166 false:0036
 0036: 0x15 0x81 0x00 0x00000025   jeq 37   true:0166 false:0037
 0037: 0x15 0x80 0x00 0x00000026   jeq 38   true:0166 false:0038
 0038: 0x15 0x7f 0x00 0x00000027   jeq 39   true:0166 false:0039
 0039: 0x15 0x7e 0x00 0x00000028   jeq 40   true:0166 false:0040
 0040: 0x15 0x7d 0x00 0x00000029   jeq 41   true:0166 false:0041
 0041: 0x15 0x7c 0x00 0x0000002a   jeq 42   true:0166 false:0042
 0042: 0x15 0x7b 0x00 0x0000002b   jeq 43   true:0166 false:0043
 0043: 0x15 0x7a 0x00 0x0000002d   jeq 45   true:0166 false:0044
 0044: 0x15 0x79 0x00 0x0000002e   jeq 46   true:0166 false:0045
 0045: 0x15 0x78 0x00 0x0000002f   jeq 47   true:0166 false:0046
 0046: 0x15 0x77 0x00 0x00000030   jeq 48   true:0166 false:0047
 0047: 0x15 0x76 0x00 0x00000031   jeq 49   true:0166 false:0048
 0048: 0x15 0x75 0x00 0x00000032   jeq 50   true:0166 false:0049
 0049: 0x15 0x71 0x00 0x00000033   jeq 51   true:0163 false:0050
 0050: 0x15 0x73 0x00 0x00000034   jeq 52   true:0166 false:0051
 0051: 0x15 0x72 0x00 0x00000036   jeq 54   true:0166 false:0052
 0052: 0x15 0x71 0x00 0x00000037   jeq 55   true:0166 false:0053
 0053: 0x15 0x70 0x00 0x00000039   jeq 57   true:0166 false:0054
 0054: 0x15 0x6f 0x00 0x0000003b   jeq 59   true:0166 false:0055
 0055: 0x15 0x6e 0x00 0x0000003c   jeq 60   true:0166 false:0056
 0056: 0x15 0x6d 0x00 0x0000003d   jeq 61   true:0166 false:0057
 0057: 0x15 0x69 0x00 0x0000003e   jeq 62   true:0163 false:0058
 0058: 0x15 0x6b 0x00 0x0000003f   jeq 63   true:0166 false:0059
 0059: 0x15 0x6a 0x00 0x00000040   jeq 64   true:0166 false:0060
 0060: 0x15 0x69 0x00 0x00000041   jeq 65   true:0166 false:0061
 0061: 0x15 0x68 0x00 0x00000042   jeq 66   true:0166 false:0062
 0062: 0x15 0x67 0x00 0x00000043   jeq 67   true:0166 false:0063
 0063: 0x15 0x63 0x00 0x00000044   jeq 68   true:0163 false:0064
 0064: 0x15 0x62 0x00 0x00000045   jeq 69   true:0163 false:0065
 0065: 0x15 0x64 0x00 0x00000046   jeq 70   true:0166 false:0066
 0066: 0x15 0x63 0x00 0x00000047   jeq 71   true:0166 false:0067
 0067: 0x15 0x62 0x00 0x00000048   jeq 72   true:0166 false:0068
 0068: 0x15 0x61 0x00 0x00000049   jeq 73   true:0166 false:0069
 0069: 0x15 0x60 0x00 0x0000004a   jeq 74   true:0166 false:0070
 0070: 0x15 0x5f 0x00 0x0000004b   jeq 75   true:0166 false:0071
 0071: 0x15 0x5e 0x00 0x0000004c   jeq 76   true:0166 false:0072
 0072: 0x15 0x5d 0x00 0x0000004d   jeq 77   true:0166 false:0073
 0073: 0x15 0x5c 0x00 0x0000004e   jeq 78   true:0166 false:0074
 0074: 0x15 0x58 0x00 0x0000004f   jeq 79   true:0163 false:0075
 0075: 0x15 0x5a 0x00 0x00000050   jeq 80   true:0166 false:0076
 0076: 0x15 0x59 0x00 0x00000051   jeq 81   true:0166 false:0077
 0077: 0x15 0x58 0x00 0x00000052   jeq 82   true:0166 false:0078
 0078: 0x15 0x57 0x00 0x00000053   jeq 83   true:0166 false:0079
 0079: 0x15 0x56 0x00 0x00000054   jeq 84   true:0166 false:0080
 0080: 0x15 0x55 0x00 0x00000055   jeq 85   true:0166 false:0081
 0081: 0x15 0x51 0x00 0x00000056   jeq 86   true:0163 false:0082
 0082: 0x15 0x50 0x00 0x00000057   jeq 87   true:0163 false:0083
 0083: 0x15 0x52 0x00 0x00000058   jeq 88   true:0166 false:0084
 0084: 0x15 0x51 0x00 0x00000059   jeq 89   true:0166 false:0085
 0085: 0x15 0x50 0x00 0x0000005a   jeq 90   true:0166 false:0086
 0086: 0x15 0x4f 0x00 0x0000005b   jeq 91   true:0166 false:0087
 0087: 0x15 0x4e 0x00 0x0000005c   jeq 92   true:0166 false:0088
 0088: 0x15 0x4d 0x00 0x0000005d   jeq 93   true:0166 false:0089
 0089: 0x15 0x4c 0x00 0x0000005e   jeq 94   true:0166 false:0090
 0090: 0x15 0x4b 0x00 0x0000005f   jeq 95   true:0166 false:0091
 0091: 0x15 0x4a 0x00 0x00000060   jeq 96   true:0166 false:0092
 0092: 0x15 0x49 0x00 0x00000061   jeq 97   true:0166 false:0093
 0093: 0x15 0x48 0x00 0x00000063   jeq 99   true:0166 false:0094
 0094: 0x15 0x47 0x00 0x00000064   jeq 100  true:0166 false:0095
 0095: 0x15 0x43 0x00 0x00000065   jeq 101  true:0163 false:0096
 0096: 0x15 0x45 0x00 0x00000066   jeq 102  true:0166 false:0097
 0097: 0x15 0x41 0x00 0x00000067   jeq 103  true:0163 false:0098
 0098: 0x15 0x43 0x00 0x00000068   jeq 104  true:0166 false:0099
 0099: 0x15 0x42 0x00 0x00000069   jeq 105  true:0166 false:0100
 0100: 0x15 0x41 0x00 0x0000006a   jeq 106  true:0166 false:0101
 0101: 0x15 0x40 0x00 0x0000006b   jeq 107  true:0166 false:0102
 0102: 0x15 0x3f 0x00 0x0000006c   jeq 108  true:0166 false:0103
 0103: 0x15 0x3e 0x00 0x0000006d   jeq 109  true:0166 false:0104
 0104: 0x15 0x3a 0x00 0x0000006e   jeq 110  true:0163 false:0105
 0105: 0x15 0x3c 0x00 0x0000006f   jeq 111  true:0166 false:0106
 0106: 0x15 0x38 0x00 0x00000070   jeq 112  true:0163 false:0107
 0107: 0x15 0x37 0x00 0x00000071   jeq 113  true:0163 false:0108
 0108: 0x15 0x39 0x00 0x00000072   jeq 114  true:0166 false:0109
 0109: 0x15 0x35 0x00 0x00000073   jeq 115  true:0163 false:0110
 0110: 0x15 0x37 0x00 0x00000074   jeq 116  true:0166 false:0111
 0111: 0x15 0x36 0x00 0x00000075   jeq 117  true:0166 false:0112
 0112: 0x15 0x35 0x00 0x00000076   jeq 118  true:0166 false:0113
 0113: 0x15 0x34 0x00 0x00000077   jeq 119  true:0166 false:0114
 0114: 0x15 0x33 0x00 0x00000078   jeq 120  true:0166 false:0115
 0115: 0x15 0x32 0x00 0x00000079   jeq 121  true:0166 false:0116
 0116: 0x15 0x31 0x00 0x0000007a   jeq 122  true:0166 false:0117
 0117: 0x15 0x2d 0x00 0x0000007b   jeq 123  true:0163 false:0118
 0118: 0x15 0x2c 0x00 0x0000007c   jeq 124  true:0163 false:0119
 0119: 0x15 0x2e 0x00 0x0000007d   jeq 125  true:0166 false:0120
 0120: 0x15 0x2d 0x00 0x0000007e   jeq 126  true:0166 false:0121
 0121: 0x15 0x29 0x00 0x0000007f   jeq 127  true:0163 false:0122
 0122: 0x15 0x28 0x00 0x00000080   jeq 128  true:0163 false:0123
 0123: 0x15 0x27 0x00 0x00000081   jeq 129  true:0163 false:0124
 0124: 0x15 0x26 0x00 0x00000082   jeq 130  true:0163 false:0125
 0125: 0x15 0x25 0x00 0x00000083   jeq 131  true:0163 false:0126
 0126: 0x15 0x27 0x00 0x00000084   jeq 132  true:0166 false:0127
 0127: 0x15 0x26 0x00 0x00000085   jeq 133  true:0166 false:0128
 0128: 0x15 0x22 0x00 0x00000086   jeq 134  true:0163 false:0129
 0129: 0x15 0x21 0x00 0x00000087   jeq 135  true:0163 false:0130
 0130: 0x15 0x23 0x00 0x00000088   jeq 136  true:0166 false:0131
 0131: 0x15 0x22 0x00 0x0000008a   jeq 138  true:0166 false:0132
 0132: 0x15 0x21 0x00 0x0000008b   jeq 139  true:0166 false:0133
 0133: 0x15 0x20 0x00 0x0000008c   jeq 140  true:0166 false:0134
 0134: 0x15 0x1f 0x00 0x0000008d   jeq 141  true:0166 false:0135
 0135: 0x15 0x1e 0x00 0x0000008e   jeq 142  true:0166 false:0136
 0136: 0x15 0x1d 0x00 0x0000008f   jeq 143  true:0166 false:0137
 0137: 0x15 0x1c 0x00 0x00000090   jeq 144  true:0166 false:0138
 0138: 0x15 0x1b 0x00 0x00000091   jeq 145  true:0166 false:0139
 0139: 0x15 0x1a 0x00 0x00000092   jeq 146  true:0166 false:0140
 0140: 0x15 0x19 0x00 0x00000093   jeq 147  true:0166 false:0141
 0141: 0x15 0x18 0x00 0x00000094   jeq 148  true:0166 false:0142
 0142: 0x15 0x14 0x00 0x00000095   jeq 149  true:0163 false:0143
 0143: 0x15 0x13 0x00 0x00000096   jeq 150  true:0163 false:0144
 0144: 0x15 0x12 0x00 0x00000097   jeq 151  true:0163 false:0145
 0145: 0x15 0x11 0x00 0x00000098   jeq 152  true:0163 false:0146
 0146: 0x15 0x10 0x00 0x00000099   jeq 153  true:0163 false:0147
 0147: 0x15 0x12 0x00 0x0000009a   jeq 154  true:0166 false:0148
 0148: 0x15 0x11 0x00 0x0000009b   jeq 155  true:0166 false:0149
 0149: 0x15 0x10 0x00 0x0000009c   jeq 156  true:0166 false:0150
 0150: 0x15 0x0f 0x00 0x0000009d   jeq 157  true:0166 false:0151
 0151: 0x15 0x0e 0x00 0x0000009e   jeq 158  true:0166 false:0152
 0152: 0x15 0x0d 0x00 0x0000009f   jeq 159  true:0166 false:0153
 0153: 0x15 0x0c 0x00 0x000000a0   jeq 160  true:0166 false:0154
 0154: 0x15 0x0b 0x00 0x000000a1   jeq 161  true:0166 false:0155
 0155: 0x15 0x0a 0x00 0x000000a2   jeq 162  true:0166 false:0156
 0156: 0x15 0x09 0x00 0x000000a3   jeq 163  true:0166 false:0157
 0157: 0x15 0x08 0x00 0x000000a4   jeq 164  true:0166 false:0158
 0158: 0x15 0x07 0x00 0x000000a5   jeq 165  true:0166 false:0159
 0159: 0x15 0x03 0x00 0x000000a6   jeq 166  true:0163 false:0160
 0160: 0x15 0x02 0x00 0x000000a7   jeq 167  true:0163 false:0161
 0161: 0x15 0x04 0x00 0x000000a8   jeq 168  true:0166 false:0162
 0162: 0x15 0x00 0x01 0x000000a9   jeq 169  true:0163 false:0164
 0163: 0x06 0x00 0x00 0x00050001   ret ERRNO(1)
 0164: 0x15 0x01 0x00 0x000000aa   jeq 170  true:0166 false:0165
 0165: 0x15 0x00 0x01 0x000000ab   jeq 171  true:0166 false:0167
 0166: 0x06 0x00 0x00 0x7fff0000   ret ALLOW
 0167: 0x15 0xff 0x00 0x000000ac   jeq 172  true:0423 false:0168
 0168: 0x15 0xfe 0x00 0x000000ad   jeq 173  true:0423 false:0169
 0169: 0x15 0xfd 0x00 0x000000ae   jeq 174  true:0423 false:0170
 0170: 0x15 0xfc 0x00 0x000000af   jeq 175  true:0423 false:0171
 0171: 0x15 0xfb 0x00 0x000000b0   jeq 176  true:0423 false:0172
 0172: 0x15 0xfa 0x00 0x000000b1   jeq 177  true:0423 false:0173
 0173: 0x15 0xf9 0x00 0x000000b2   jeq 178  true:0423 false:0174
 0174: 0x15 0xf8 0x00 0x000000b3   jeq 179  true:0423 false:0175
 0175: 0x15 0xf7 0x00 0x000000b4   jeq 180  true:0423 false:0176
 0176: 0x15 0xf6 0x00 0x000000b5   jeq 181  true:0423 false:0177
 0177: 0x15 0xf5 0x00 0x000000b6   jeq 182  true:0423 false:0178
 0178: 0x15 0xf4 0x00 0x000000b7   jeq 183  true:0423 false:0179
 0179: 0x15 0xf3 0x00 0x000000b8   jeq 184  true:0423 false:0180
 0180: 0x15 0xf2 0x00 0x000000b9   jeq 185  true:0423 false:0181
 0181: 0x15 0xf1 0x00 0x000000ba   jeq 186  true:0423 false:0182
 0182: 0x15 0xf0 0x00 0x000000bb   jeq 187  true:0423 false:0183
 0183: 0x15 0xec 0x00 0x000000bc   jeq 188  true:0420 false:0184
 0184: 0x15 0xee 0x00 0x000000be   jeq 190  true:0423 false:0185
 0185: 0x15 0xed 0x00 0x000000bf   jeq 191  true:0423 false:0186
 0186: 0x15 0xec 0x00 0x000000c0   jeq 192  true:0423 false:0187
 0187: 0x15 0xeb 0x00 0x000000c1   jeq 193  true:0423 false:0188
 0188: 0x15 0xea 0x00 0x000000c2   jeq 194  true:0423 false:0189
 0189: 0x15 0xe9 0x00 0x000000c3   jeq 195  true:0423 false:0190
 0190: 0x15 0xe8 0x00 0x000000c4   jeq 196  true:0423 false:0191
 0191: 0x15 0xe7 0x00 0x000000c5   jeq 197  true:0423 false:0192
 0192: 0x15 0xe6 0x00 0x000000c6   jeq 198  true:0423 false:0193
 0193: 0x15 0xe5 0x00 0x000000c7   jeq 199  true:0423 false:0194
 0194: 0x15 0xe4 0x00 0x000000c8   jeq 200  true:0423 false:0195
 0195: 0x15 0xe3 0x00 0x000000c9   jeq 201  true:0423 false:0196
 0196: 0x15 0xe2 0x00 0x000000ca   jeq 202  true:0423 false:0197
 0197: 0x15 0xe1 0x00 0x000000cb   jeq 203  true:0423 false:0198
 0198: 0x15 0xe0 0x00 0x000000cc   jeq 204  true:0423 false:0199
 0199: 0x15 0xdf 0x00 0x000000cd   jeq 205  true:0423 false:0200
 0200: 0x15 0xde 0x00 0x000000ce   jeq 206  true:0423 false:0201
 0201: 0x15 0xdd 0x00 0x000000cf   jeq 207  true:0423 false:0202
 0202: 0x15 0xdc 0x00 0x000000d0   jeq 208  true:0423 false:0203
 0203: 0x15 0xdb 0x00 0x000000d1   jeq 209  true:0423 false:0204
 0204: 0x15 0xda 0x00 0x000000d2   jeq 210  true:0423 false:0205
 0205: 0x15 0xd9 0x00 0x000000d3   jeq 211  true:0423 false:0206
 0206: 0x15 0xd8 0x00 0x000000d4   jeq 212  true:0423 false:0207
 0207: 0x15 0xd7 0x00 0x000000d5   jeq 213  true:0423 false:0208
 0208: 0x15 0xd6 0x00 0x000000d6   jeq 214  true:0423 false:0209
 0209: 0x15 0xd5 0x00 0x000000d7   jeq 215  true:0423 false:0210
 0210: 0x15 0xd4 0x00 0x000000d8   jeq 216  true:0423 false:0211
 0211: 0x15 0xd3 0x00 0x000000d9   jeq 217  true:0423 false:0212
 0212: 0x15 0xd2 0x00 0x000000da   jeq 218  true:0423 false:0213
 0213: 0x15 0xd1 0x00 0x000000db   jeq 219  true:0423 false:0214
 0214: 0x15 0xd0 0x00 0x000000dc   jeq 220  true:0423 false:0215
 0215: 0x15 0xcf 0x00 0x000000dd   jeq 221  true:0423 false:0216
 0216: 0x15 0xce 0x00 0x000000e0   jeq 224  true:0423 false:0217
 0217: 0x15 0xcd 0x00 0x000000e1   jeq 225  true:0423 false:0218
 0218: 0x15 0xcc 0x00 0x000000e2   jeq 226  true:0423 false:0219
 0219: 0x15 0xcb 0x00 0x000000e3   jeq 227  true:0423 false:0220
 0220: 0x15 0xca 0x00 0x000000e4   jeq 228  true:0423 false:0221
 0221: 0x15 0xc9 0x00 0x000000e5   jeq 229  true:0423 false:0222
 0222: 0x15 0xc8 0x00 0x000000e6   jeq 230  true:0423 false:0223
 0223: 0x15 0xc7 0x00 0x000000e7   jeq 231  true:0423 false:0224
 0224: 0x15 0xc6 0x00 0x000000e8   jeq 232  true:0423 false:0225
 0225: 0x15 0xc5 0x00 0x000000e9   jeq 233  true:0423 false:0226
 0226: 0x15 0xc4 0x00 0x000000ea   jeq 234  true:0423 false:0227
 0227: 0x15 0xc3 0x00 0x000000eb   jeq 235  true:0423 false:0228
 0228: 0x15 0xc2 0x00 0x000000ec   jeq 236  true:0423 false:0229
 0229: 0x15 0xc1 0x00 0x000000ed   jeq 237  true:0423 false:0230
 0230: 0x15 0xc0 0x00 0x000000ee   jeq 238  true:0423 false:0231
 0231: 0x15 0xbf 0x00 0x000000ef   jeq 239  true:0423 false:0232
 0232: 0x15 0xbe 0x00 0x000000f0   jeq 240  true:0423 false:0233
 0233: 0x15 0xbd 0x00 0x000000f1   jeq 241  true:0423 false:0234
 0234: 0x15 0xbc 0x00 0x000000f2   jeq 242  true:0423 false:0235
 0235: 0x15 0xbb 0x00 0x000000f3   jeq 243  true:0423 false:0236
 0236: 0x15 0xba 0x00 0x000000f4   jeq 244  true:0423 false:0237
 0237: 0x15 0xb9 0x00 0x000000f5   jeq 245  true:0423 false:0238
 0238: 0x15 0xb8 0x00 0x000000f6   jeq 246  true:0423 false:0239
 0239: 0x15 0xb7 0x00 0x000000f7   jeq 247  true:0423 false:0240
 0240: 0x15 0xb6 0x00 0x000000f8   jeq 248  true:0423 false:0241
 0241: 0x15 0xb5 0x00 0x000000f9   jeq 249  true:0423 false:0242
 0242: 0x15 0xb4 0x00 0x000000fa   jeq 250  true:0423 false:0243
 0243: 0x15 0xb3 0x00 0x000000fc   jeq 252  true:0423 false:0244
 0244: 0x15 0xaf 0x00 0x000000fd   jeq 253  true:0420 false:0245
 0245: 0x15 0xb1 0x00 0x000000fe   jeq 254  true:0423 false:0246
 0246: 0x15 0xb0 0x00 0x000000ff   jeq 255  true:0423 false:0247
 0247: 0x15 0xaf 0x00 0x00000100   jeq 256  true:0423 false:0248
 0248: 0x15 0xae 0x00 0x00000101   jeq 257  true:0423 false:0249
 0249: 0x15 0xad 0x00 0x00000102   jeq 258  true:0423 false:0250
 0250: 0x15 0xac 0x00 0x00000103   jeq 259  true:0423 false:0251
 0251: 0x15 0xab 0x00 0x00000104   jeq 260  true:0423 false:0252
 0252: 0x15 0xaa 0x00 0x00000105   jeq 261  true:0423 false:0253
 0253: 0x15 0xa9 0x00 0x00000106   jeq 262  true:0423 false:0254
 0254: 0x15 0xa8 0x00 0x00000107   jeq 263  true:0423 false:0255
 0255: 0x15 0xa4 0x00 0x00000108   jeq 264  true:0420 false:0256
 0256: 0x15 0xa6 0x00 0x00000109   jeq 265  true:0423 false:0257
 0257: 0x15 0xa5 0x00 0x0000010a   jeq 266  true:0423 false:0258
 0258: 0x15 0xa4 0x00 0x0000010b   jeq 267  true:0423 false:0259
 0259: 0x15 0xa3 0x00 0x0000010c   jeq 268  true:0423 false:0260
 0260: 0x15 0xa2 0x00 0x0000010d   jeq 269  true:0423 false:0261
 0261: 0x15 0xa1 0x00 0x0000010e   jeq 270  true:0423 false:0262
 0262: 0x15 0xa0 0x00 0x0000010f   jeq 271  true:0423 false:0263
 0263: 0x15 0x9f 0x00 0x00000110   jeq 272  true:0423 false:0264
 0264: 0x15 0x9e 0x00 0x00000112   jeq 274  true:0423 false:0265
 0265: 0x15 0x9d 0x00 0x00000113   jeq 275  true:0423 false:0266
 0266: 0x15 0x9c 0x00 0x00000114   jeq 276  true:0423 false:0267
 0267: 0x15 0x9b 0x00 0x00000115   jeq 277  true:0423 false:0268
 0268: 0x15 0x9a 0x00 0x00000116   jeq 278  true:0423 false:0269
 0269: 0x15 0x99 0x00 0x00000117   jeq 279  true:0423 false:0270
 0270: 0x15 0x98 0x00 0x00000118   jeq 280  true:0423 false:0271
 0271: 0x15 0x97 0x00 0x00000119   jeq 281  true:0423 false:0272
 0272: 0x15 0x96 0x00 0x0000011a   jeq 282  true:0423 false:0273
 0273: 0x15 0x92 0x00 0x0000011b   jeq 283  true:0420 false:0274
 0274: 0x15 0x94 0x00 0x0000011c   jeq 284  true:0423 false:0275
 0275: 0x15 0x90 0x00 0x0000011e   jeq 286  true:0420 false:0276
 0276: 0x15 0x8f 0x00 0x0000011f   jeq 287  true:0420 false:0277
 0277: 0x15 0x8e 0x00 0x00000120   jeq 288  true:0420 false:0278
 0278: 0x15 0x90 0x00 0x00000121   jeq 289  true:0423 false:0279
 0279: 0x15 0x8f 0x00 0x00000122   jeq 290  true:0423 false:0280
 0280: 0x15 0x8e 0x00 0x00000123   jeq 291  true:0423 false:0281
 0281: 0x15 0x8d 0x00 0x00000124   jeq 292  true:0423 false:0282
 0282: 0x15 0x8c 0x00 0x00000125   jeq 293  true:0423 false:0283
 0283: 0x15 0x8b 0x00 0x00000126   jeq 294  true:0423 false:0284
 0284: 0x15 0x8a 0x00 0x00000127   jeq 295  true:0423 false:0285
 0285: 0x15 0x89 0x00 0x00000128   jeq 296  true:0423 false:0286
 0286: 0x15 0x88 0x00 0x00000129   jeq 297  true:0423 false:0287
 0287: 0x15 0x87 0x00 0x0000012a   jeq 298  true:0423 false:0288
 0288: 0x15 0x86 0x00 0x0000012b   jeq 299  true:0423 false:0289
 0289: 0x15 0x85 0x00 0x0000012c   jeq 300  true:0423 false:0290
 0290: 0x15 0x84 0x00 0x0000012d   jeq 301  true:0423 false:0291
 0291: 0x15 0x83 0x00 0x0000012e   jeq 302  true:0423 false:0292
 0292: 0x15 0x82 0x00 0x0000012f   jeq 303  true:0423 false:0293
 0293: 0x15 0x81 0x00 0x00000130   jeq 304  true:0423 false:0294
 0294: 0x15 0x80 0x00 0x00000131   jeq 305  true:0423 false:0295
 0295: 0x15 0x7f 0x00 0x00000132   jeq 306  true:0423 false:0296
 0296: 0x15 0x7e 0x00 0x00000133   jeq 307  true:0423 false:0297
 0297: 0x15 0x7d 0x00 0x00000134   jeq 308  true:0423 false:0298
 0298: 0x15 0x7c 0x00 0x00000135   jeq 309  true:0423 false:0299
 0299: 0x15 0x7b 0x00 0x00000136   jeq 310  true:0423 false:0300
 0300: 0x15 0x7a 0x00 0x00000137   jeq 311  true:0423 false:0301
 0301: 0x15 0x79 0x00 0x00000138   jeq 312  true:0423 false:0302
 0302: 0x15 0x78 0x00 0x00000139   jeq 313  true:0423 false:0303
 0303: 0x15 0x77 0x00 0x0000013a   jeq 314  true:0423 false:0304
 0304: 0x15 0x76 0x00 0x0000013b   jeq 315  true:0423 false:0305
 0305: 0x15 0x75 0x00 0x0000013c   jeq 316  true:0423 false:0306
 0306: 0x15 0x74 0x00 0x0000013d   jeq 317  true:0423 false:0307
 0307: 0x15 0x73 0x00 0x0000013e   jeq 318  true:0423 false:0308
 0308: 0x15 0x72 0x00 0x0000013f   jeq 319  true:0423 false:0309
 0309: 0x15 0x71 0x00 0x00000140   jeq 320  true:0423 false:0310
 0310: 0x15 0x70 0x00 0x00000141   jeq 321  true:0423 false:0311
 0311: 0x15 0x6f 0x00 0x00000142   jeq 322  true:0423 false:0312
 0312: 0x15 0x6e 0x00 0x00000143   jeq 323  true:0423 false:0313
 0313: 0x15 0x6d 0x00 0x00000144   jeq 324  true:0423 false:0314
 0314: 0x15 0x6c 0x00 0x00000145   jeq 325  true:0423 false:0315
 0315: 0x15 0x6b 0x00 0x00000146   jeq 326  true:0423 false:0316
 0316: 0x15 0x6a 0x00 0x00000147   jeq 327  true:0423 false:0317
 0317: 0x15 0x69 0x00 0x00000148   jeq 328  true:0423 false:0318
 0318: 0x15 0x68 0x00 0x00000149   jeq 329  true:0423 false:0319
 0319: 0x15 0x67 0x00 0x0000014a   jeq 330  true:0423 false:0320
 0320: 0x15 0x66 0x00 0x0000014b   jeq 331  true:0423 false:0321
 0321: 0x15 0x65 0x00 0x0000014c   jeq 332  true:0423 false:0322
 0322: 0x15 0x64 0x00 0x0000014d   jeq 333  true:0423 false:0323
 0323: 0x15 0x63 0x00 0x0000014e   jeq 334  true:0423 false:0324
 0324: 0x15 0x62 0x00 0x0000014f   jeq 335  true:0423 false:0325
 0325: 0x15 0x5e 0x00 0x00000150   jeq 336  true:0420 false:0326
 0326: 0x15 0x60 0x00 0x00000151   jeq 337  true:0423 false:0327
 0327: 0x15 0x5c 0x00 0x00000152   jeq 338  true:0420 false:0328
 0328: 0x15 0x5b 0x00 0x00000153   jeq 339  true:0420 false:0329
 0329: 0x15 0x5d 0x00 0x00000154   jeq 340  true:0423 false:0330
 0330: 0x15 0x5c 0x00 0x00000155   jeq 341  true:0423 false:0331
 0331: 0x15 0x58 0x00 0x00000156   jeq 342  true:0420 false:0332
 0332: 0x15 0x57 0x00 0x00000157   jeq 343  true:0420 false:0333
 0333: 0x15 0x59 0x00 0x00000158   jeq 344  true:0423 false:0334
 0334: 0x15 0x58 0x00 0x00000159   jeq 345  true:0423 false:0335
 0335: 0x15 0x57 0x00 0x0000015a   jeq 346  true:0423 false:0336
 0336: 0x15 0x56 0x00 0x0000015b   jeq 347  true:0423 false:0337
 0337: 0x15 0x55 0x00 0x0000015c   jeq 348  true:0423 false:0338
 0338: 0x15 0x54 0x00 0x0000015d   jeq 349  true:0423 false:0339
 0339: 0x15 0x50 0x00 0x0000015e   jeq 350  true:0420 false:0340
 0340: 0x15 0x52 0x00 0x0000015f   jeq 351  true:0423 false:0341
 0341: 0x15 0x51 0x00 0x00000160   jeq 352  true:0423 false:0342
 0342: 0x15 0x50 0x00 0x00000161   jeq 353  true:0423 false:0343
 0343: 0x15 0x4f 0x00 0x00000162   jeq 354  true:0423 false:0344
 0344: 0x15 0x4e 0x00 0x00000163   jeq 355  true:0423 false:0345
 0345: 0x15 0x4d 0x00 0x00000164   jeq 356  true:0423 false:0346
 0346: 0x15 0x49 0x00 0x00000165   jeq 357  true:0420 false:0347
 0347: 0x15 0x4b 0x00 0x00000166   jeq 358  true:0423 false:0348
 0348: 0x15 0x4a 0x00 0x00000167   jeq 359  true:0423 false:0349
 0349: 0x15 0x49 0x00 0x00000168   jeq 360  true:0423 false:0350
 0350: 0x15 0x48 0x00 0x00000169   jeq 361  true:0423 false:0351
 0351: 0x15 0x47 0x00 0x0000016a   jeq 362  true:0423 false:0352
 0352: 0x15 0x46 0x00 0x0000016b   jeq 363  true:0423 false:0353
 0353: 0x15 0x45 0x00 0x0000016c   jeq 364  true:0423 false:0354
 0354: 0x15 0x44 0x00 0x0000016d   jeq 365  true:0423 false:0355
 0355: 0x15 0x43 0x00 0x0000016e   jeq 366  true:0423 false:0356
 0356: 0x15 0x42 0x00 0x0000016f   jeq 367  true:0423 false:0357
 0357: 0x15 0x41 0x00 0x00000170   jeq 368  true:0423 false:0358
 0358: 0x15 0x40 0x00 0x00000171   jeq 369  true:0423 false:0359
 0359: 0x15 0x3f 0x00 0x00000172   jeq 370  true:0423 false:0360
 0360: 0x15 0x3e 0x00 0x00000173   jeq 371  true:0423 false:0361
 0361: 0x15 0x3d 0x00 0x00000174   jeq 372  true:0423 false:0362
 0362: 0x15 0x3c 0x00 0x00000175   jeq 373  true:0423 false:0363
 0363: 0x15 0x3b 0x00 0x00000176   jeq 374  true:0423 false:0364
 0364: 0x15 0x3a 0x00 0x00000177   jeq 375  true:0423 false:0365
 0365: 0x15 0x36 0x00 0x00000178   jeq 376  true:0420 false:0366
 0366: 0x15 0x38 0x00 0x00000179   jeq 377  true:0423 false:0367
 0367: 0x15 0x37 0x00 0x0000017a   jeq 378  true:0423 false:0368
 0368: 0x15 0x36 0x00 0x0000017b   jeq 379  true:0423 false:0369
 0369: 0x15 0x32 0x00 0x0000017c   jeq 380  true:0420 false:0370
 0370: 0x15 0x31 0x00 0x0000017d   jeq 381  true:0420 false:0371
 0371: 0x15 0x30 0x00 0x0000017e   jeq 382  true:0420 false:0372
 0372: 0x15 0x32 0x00 0x0000017f   jeq 383  true:0423 false:0373
 0373: 0x15 0x31 0x00 0x00000180   jeq 384  true:0423 false:0374
 0374: 0x15 0x30 0x00 0x00000181   jeq 385  true:0423 false:0375
 0375: 0x15 0x2f 0x00 0x00000182   jeq 386  true:0423 false:0376
 0376: 0x15 0x2e 0x00 0x00000189   jeq 393  true:0423 false:0377
 0377: 0x15 0x2d 0x00 0x0000018a   jeq 394  true:0423 false:0378
 0378: 0x15 0x2c 0x00 0x0000018b   jeq 395  true:0423 false:0379
 0379: 0x15 0x2b 0x00 0x0000018c   jeq 396  true:0423 false:0380
 0380: 0x15 0x2a 0x00 0x0000018d   jeq 397  true:0423 false:0381
 0381: 0x15 0x29 0x00 0x0000018e   jeq 398  true:0423 false:0382
 0382: 0x15 0x28 0x00 0x0000018f   jeq 399  true:0423 false:0383
 0383: 0x15 0x27 0x00 0x00000190   jeq 400  true:0423 false:0384
 0384: 0x15 0x26 0x00 0x00000191   jeq 401  true:0423 false:0385
 0385: 0x15 0x25 0x00 0x00000192   jeq 402  true:0423 false:0386
 0386: 0x15 0x24 0x00 0x00000193   jeq 403  true:0423 false:0387
 0387: 0x15 0x20 0x00 0x00000194   jeq 404  true:0420 false:0388
 0388: 0x15 0x1f 0x00 0x00000195   jeq 405  true:0420 false:0389
 0389: 0x15 0x21 0x00 0x00000196   jeq 406  true:0423 false:0390
 0390: 0x15 0x20 0x00 0x00000197   jeq 407  true:0423 false:0391
 0391: 0x15 0x1f 0x00 0x00000198   jeq 408  true:0423 false:0392
 0392: 0x15 0x1e 0x00 0x00000199   jeq 409  true:0423 false:0393
 0393: 0x15 0x1d 0x00 0x0000019a   jeq 410  true:0423 false:0394
 0394: 0x15 0x1c 0x00 0x0000019b   jeq 411  true:0423 false:0395
 0395: 0x15 0x1b 0x00 0x0000019c   jeq 412  true:0423 false:0396
 0396: 0x15 0x1a 0x00 0x0000019d   jeq 413  true:0423 false:0397
 0397: 0x15 0x19 0x00 0x0000019e   jeq 414  true:0423 false:0398
 0398: 0x15 0x18 0x00 0x000001a0   jeq 416  true:0423 false:0399
 0399: 0x15 0x17 0x00 0x000001a1   jeq 417  true:0423 false:0400
 0400: 0x15 0x16 0x00 0x000001a2   jeq 418  true:0423 false:0401
 0401: 0x15 0x15 0x00 0x000001a3   jeq 419  true:0423 false:0402
 0402: 0x15 0x14 0x00 0x000001a4   jeq 420  true:0423 false:0403
 0403: 0x15 0x13 0x00 0x000001a5   jeq 421  true:0423 false:0404
 0404: 0x15 0x12 0x00 0x000001a6   jeq 422  true:0423 false:0405
 0405: 0x15 0x0e 0x00 0x000001a7   jeq 423  true:0420 false:0406
 0406: 0x15 0x10 0x00 0x000001a8   jeq 424  true:0423 false:0407
 0407: 0x15 0x0f 0x00 0x000001a9   jeq 425  true:0423 false:0408
 0408: 0x15 0x0e 0x00 0x000001aa   jeq 426  true:0423 false:0409
 0409: 0x15 0x0d 0x00 0x000001ab   jeq 427  true:0423 false:0410
 0410: 0x15 0x0c 0x00 0x000001ac   jeq 428  true:0423 false:0411
 0411: 0x15 0x0b 0x00 0x000001ad   jeq 429  true:0423 false:0412
 0412: 0x15 0x0a 0x00 0x000001ae   jeq 430  true:0423 false:0413
 0413: 0x15 0x09 0x00 0x000001af   jeq 431  true:0423 false:0414
 0414: 0x15 0x08 0x00 0x000001b0   jeq 432  true:0423 false:0415
 0415: 0x15 0x07 0x00 0x000001b1   jeq 433  true:0423 false:0416
 0416: 0x15 0x06 0x00 0x000001b2   jeq 434  true:0423 false:0417
 0417: 0x15 0x05 0x00 0x000001b3   jeq 435  true:0423 false:0418
 0418: 0x15 0x04 0x00 0x000001b5   jeq 437  true:0423 false:0419
 0419: 0x15 0x00 0x01 0x000001b6   jeq 438  true:0420 false:0421
 0420: 0x06 0x00 0x00 0x00050001   ret ERRNO(1)
 0421: 0x15 0x01 0x00 0x000001b7   jeq 439  true:0423 false:0422
 0422: 0x06 0x00 0x00 0x00050026   ret ERRNO(38)
 0423: 0x06 0x00 0x00 0x7fff0000   ret ALLOW

With the optimization on:
 line  OP   JT   JF   K
=================================
 0000: 0x20 0x00 0x00 0x00000004   ld  $data[4]
 0001: 0x15 0x00 0x0d 0x40000003   jeq 1073741827 true:0002 false:0015
 0002: 0x20 0x00 0x00 0x00000000   ld  $data[0]
 0003: 0x25 0x01 0x00 0x000000a9   jgt 169  true:0005 false:0004
 0004: 0x05 0x00 0x00 0x00000143   jmp 0328
 0005: 0x25 0x00 0xa0 0x0000012f   jgt 303  true:0006 false:0166
 0006: 0x25 0x00 0x50 0x0000016f   jgt 367  true:0007 false:0087
 0007: 0x25 0x00 0x28 0x00000195   jgt 405  true:0008 false:0048
 0008: 0x25 0x00 0x14 0x000001a6   jgt 422  true:0009 false:0029
 0009: 0x25 0x00 0x0a 0x000001ae   jgt 430  true:0010 false:0020
 0010: 0x25 0x00 0x05 0x000001b2   jgt 434  true:0011 false:0016
 0011: 0x15 0x03 0x00 0x000001b7   jeq 439  true:0015 false:0012
 0012: 0x15 0xd9 0x00 0x000001b6   jeq 438  true:0230 false:0013
 0013: 0x15 0x01 0x00 0x000001b5   jeq 437  true:0015 false:0014
 0014: 0x15 0x00 0xfd 0x000001b3   jeq 435  true:0015 false:0268
 0015: 0x06 0x00 0x00 0x7fff0000   ret ALLOW
 0016: 0x15 0xff 0x00 0x000001b2   jeq 434  true:0272 false:0017
 0017: 0x15 0xfe 0x00 0x000001b1   jeq 433  true:0272 false:0018
 0018: 0x15 0xfd 0x00 0x000001b0   jeq 432  true:0272 false:0019
 0019: 0x15 0xfc 0xf8 0x000001af   jeq 431  true:0272 false:0268
 0020: 0x25 0x00 0x04 0x000001aa   jgt 426  true:0021 false:0025
 0021: 0x15 0xfa 0x00 0x000001ae   jeq 430  true:0272 false:0022
 0022: 0x15 0xf9 0x00 0x000001ad   jeq 429  true:0272 false:0023
 0023: 0x15 0xf8 0x00 0x000001ac   jeq 428  true:0272 false:0024
 0024: 0x15 0xf7 0xf3 0x000001ab   jeq 427  true:0272 false:0268
 0025: 0x15 0xf6 0x00 0x000001aa   jeq 426  true:0272 false:0026
 0026: 0x15 0xf5 0x00 0x000001a9   jeq 425  true:0272 false:0027
 0027: 0x15 0xf4 0x00 0x000001a8   jeq 424  true:0272 false:0028
 0028: 0x15 0xc9 0xef 0x000001a7   jeq 423  true:0230 false:0268
 0029: 0x25 0x00 0x09 0x0000019d   jgt 413  true:0030 false:0039
 0030: 0x25 0x00 0x04 0x000001a2   jgt 418  true:0031 false:0035
 0031: 0x15 0xf0 0x00 0x000001a6   jeq 422  true:0272 false:0032
 0032: 0x15 0xef 0x00 0x000001a5   jeq 421  true:0272 false:0033
 0033: 0x15 0xee 0x00 0x000001a4   jeq 420  true:0272 false:0034
 0034: 0x15 0xed 0xe9 0x000001a3   jeq 419  true:0272 false:0268
 0035: 0x15 0xec 0x00 0x000001a2   jeq 418  true:0272 false:0036
 0036: 0x15 0xeb 0x00 0x000001a1   jeq 417  true:0272 false:0037
 0037: 0x15 0xea 0x00 0x000001a0   jeq 416  true:0272 false:0038
 0038: 0x15 0xe9 0xe5 0x0000019e   jeq 414  true:0272 false:0268
 0039: 0x25 0x00 0x04 0x00000199   jgt 409  true:0040 false:0044
 0040: 0x15 0xe7 0x00 0x0000019d   jeq 413  true:0272 false:0041
 0041: 0x15 0xe6 0x00 0x0000019c   jeq 412  true:0272 false:0042
 0042: 0x15 0xe5 0x00 0x0000019b   jeq 411  true:0272 false:0043
 0043: 0x15 0xe4 0xe0 0x0000019a   jeq 410  true:0272 false:0268
 0044: 0x15 0xe3 0x00 0x00000199   jeq 409  true:0272 false:0045
 0045: 0x15 0xe2 0x00 0x00000198   jeq 408  true:0272 false:0046
 0046: 0x15 0xe1 0x00 0x00000197   jeq 407  true:0272 false:0047
 0047: 0x15 0xe0 0xdc 0x00000196   jeq 406  true:0272 false:0268
 0048: 0x25 0x00 0x13 0x0000017f   jgt 383  true:0049 false:0068
 0049: 0x25 0x00 0x09 0x0000018d   jgt 397  true:0050 false:0059
 0050: 0x25 0x00 0x04 0x00000191   jgt 401  true:0051 false:0055
 0051: 0x15 0xb2 0x00 0x00000195   jeq 405  true:0230 false:0052
 0052: 0x15 0xb1 0x00 0x00000194   jeq 404  true:0230 false:0053
 0053: 0x15 0xda 0x00 0x00000193   jeq 403  true:0272 false:0054
 0054: 0x15 0xd9 0xd5 0x00000192   jeq 402  true:0272 false:0268
 0055: 0x15 0xd8 0x00 0x00000191   jeq 401  true:0272 false:0056
 0056: 0x15 0xd7 0x00 0x00000190   jeq 400  true:0272 false:0057
 0057: 0x15 0xd6 0x00 0x0000018f   jeq 399  true:0272 false:0058
 0058: 0x15 0xd5 0xd1 0x0000018e   jeq 398  true:0272 false:0268
 0059: 0x25 0x00 0x04 0x00000189   jgt 393  true:0060 false:0064
 0060: 0x15 0xd3 0x00 0x0000018d   jeq 397  true:0272 false:0061
 0061: 0x15 0xd2 0x00 0x0000018c   jeq 396  true:0272 false:0062
 0062: 0x15 0xd1 0x00 0x0000018b   jeq 395  true:0272 false:0063
 0063: 0x15 0xd0 0xcc 0x0000018a   jeq 394  true:0272 false:0268
 0064: 0x15 0xcf 0x00 0x00000189   jeq 393  true:0272 false:0065
 0065: 0x15 0xce 0x00 0x00000182   jeq 386  true:0272 false:0066
 0066: 0x15 0xcd 0x00 0x00000181   jeq 385  true:0272 false:0067
 0067: 0x15 0xcc 0xc8 0x00000180   jeq 384  true:0272 false:0268
 0068: 0x25 0x00 0x09 0x00000177   jgt 375  true:0069 false:0078
 0069: 0x25 0x00 0x04 0x0000017b   jgt 379  true:0070 false:0074
 0070: 0x15 0xc9 0x00 0x0000017f   jeq 383  true:0272 false:0071
 0071: 0x15 0x9e 0x00 0x0000017e   jeq 382  true:0230 false:0072
 0072: 0x15 0x9d 0x00 0x0000017d   jeq 381  true:0230 false:0073
 0073: 0x15 0x9c 0xc2 0x0000017c   jeq 380  true:0230 false:0268
 0074: 0x15 0xc5 0x00 0x0000017b   jeq 379  true:0272 false:0075
 0075: 0x15 0xc4 0x00 0x0000017a   jeq 378  true:0272 false:0076
 0076: 0x15 0xc3 0x00 0x00000179   jeq 377  true:0272 false:0077
 0077: 0x15 0x98 0xbe 0x00000178   jeq 376  true:0230 false:0268
 0078: 0x25 0x00 0x04 0x00000173   jgt 371  true:0079 false:0083
 0079: 0x15 0xc0 0x00 0x00000177   jeq 375  true:0272 false:0080
 0080: 0x15 0xbf 0x00 0x00000176   jeq 374  true:0272 false:0081
 0081: 0x15 0xbe 0x00 0x00000175   jeq 373  true:0272 false:0082
 0082: 0x15 0xbd 0xb9 0x00000174   jeq 372  true:0272 false:0268
 0083: 0x15 0xbc 0x00 0x00000173   jeq 371  true:0272 false:0084
 0084: 0x15 0xbb 0x00 0x00000172   jeq 370  true:0272 false:0085
 0085: 0x15 0xba 0x00 0x00000171   jeq 369  true:0272 false:0086
 0086: 0x15 0xb9 0xb5 0x00000170   jeq 368  true:0272 false:0268
 0087: 0x25 0x00 0x27 0x0000014f   jgt 335  true:0088 false:0127
 0088: 0x25 0x00 0x13 0x0000015f   jgt 351  true:0089 false:0108
 0089: 0x25 0x00 0x09 0x00000167   jgt 359  true:0090 false:0099
 0090: 0x25 0x00 0x04 0x0000016b   jgt 363  true:0091 false:0095
 0091: 0x15 0xb4 0x00 0x0000016f   jeq 367  true:0272 false:0092
 0092: 0x15 0xb3 0x00 0x0000016e   jeq 366  true:0272 false:0093
 0093: 0x15 0xb2 0x00 0x0000016d   jeq 365  true:0272 false:0094
 0094: 0x15 0xb1 0xad 0x0000016c   jeq 364  true:0272 false:0268
 0095: 0x15 0xb0 0x00 0x0000016b   jeq 363  true:0272 false:0096
 0096: 0x15 0xaf 0x00 0x0000016a   jeq 362  true:0272 false:0097
 0097: 0x15 0xae 0x00 0x00000169   jeq 361  true:0272 false:0098
 0098: 0x15 0xad 0xa9 0x00000168   jeq 360  true:0272 false:0268
 0099: 0x25 0x00 0x04 0x00000163   jgt 355  true:0100 false:0104
 0100: 0x15 0xab 0x00 0x00000167   jeq 359  true:0272 false:0101
 0101: 0x15 0xaa 0x00 0x00000166   jeq 358  true:0272 false:0102
 0102: 0x15 0x7f 0x00 0x00000165   jeq 357  true:0230 false:0103
 0103: 0x15 0xa8 0xa4 0x00000164   jeq 356  true:0272 false:0268
 0104: 0x15 0xa7 0x00 0x00000163   jeq 355  true:0272 false:0105
 0105: 0x15 0xa6 0x00 0x00000162   jeq 354  true:0272 false:0106
 0106: 0x15 0xa5 0x00 0x00000161   jeq 353  true:0272 false:0107
 0107: 0x15 0xa4 0xa0 0x00000160   jeq 352  true:0272 false:0268
 0108: 0x25 0x00 0x09 0x00000157   jgt 343  true:0109 false:0118
 0109: 0x25 0x00 0x04 0x0000015b   jgt 347  true:0110 false:0114
 0110: 0x15 0xa1 0x00 0x0000015f   jeq 351  true:0272 false:0111
 0111: 0x15 0x76 0x00 0x0000015e   jeq 350  true:0230 false:0112
 0112: 0x15 0x9f 0x00 0x0000015d   jeq 349  true:0272 false:0113
 0113: 0x15 0x9e 0x9a 0x0000015c   jeq 348  true:0272 false:0268
 0114: 0x15 0x9d 0x00 0x0000015b   jeq 347  true:0272 false:0115
 0115: 0x15 0x9c 0x00 0x0000015a   jeq 346  true:0272 false:0116
 0116: 0x15 0x9b 0x00 0x00000159   jeq 345  true:0272 false:0117
 0117: 0x15 0x9a 0x96 0x00000158   jeq 344  true:0272 false:0268
 0118: 0x25 0x00 0x04 0x00000153   jgt 339  true:0119 false:0123
 0119: 0x15 0x6e 0x00 0x00000157   jeq 343  true:0230 false:0120
 0120: 0x15 0x6d 0x00 0x00000156   jeq 342  true:0230 false:0121
 0121: 0x15 0x96 0x00 0x00000155   jeq 341  true:0272 false:0122
 0122: 0x15 0x95 0x91 0x00000154   jeq 340  true:0272 false:0268
 0123: 0x15 0x6a 0x00 0x00000153   jeq 339  true:0230 false:0124
 0124: 0x15 0x69 0x00 0x00000152   jeq 338  true:0230 false:0125
 0125: 0x15 0x92 0x00 0x00000151   jeq 337  true:0272 false:0126
 0126: 0x15 0x67 0x8d 0x00000150   jeq 336  true:0230 false:0268
 0127: 0x25 0x00 0x13 0x0000013f   jgt 319  true:0128 false:0147
 0128: 0x25 0x00 0x09 0x00000147   jgt 327  true:0129 false:0138
 0129: 0x25 0x00 0x04 0x0000014b   jgt 331  true:0130 false:0134
 0130: 0x15 0x8d 0x00 0x0000014f   jeq 335  true:0272 false:0131
 0131: 0x15 0x8c 0x00 0x0000014e   jeq 334  true:0272 false:0132
 0132: 0x15 0x8b 0x00 0x0000014d   jeq 333  true:0272 false:0133
 0133: 0x15 0x8a 0x86 0x0000014c   jeq 332  true:0272 false:0268
 0134: 0x15 0x89 0x00 0x0000014b   jeq 331  true:0272 false:0135
 0135: 0x15 0x88 0x00 0x0000014a   jeq 330  true:0272 false:0136
 0136: 0x15 0x87 0x00 0x00000149   jeq 329  true:0272 false:0137
 0137: 0x15 0x86 0x82 0x00000148   jeq 328  true:0272 false:0268
 0138: 0x25 0x00 0x04 0x00000143   jgt 323  true:0139 false:0143
 0139: 0x15 0x84 0x00 0x00000147   jeq 327  true:0272 false:0140
 0140: 0x15 0x83 0x00 0x00000146   jeq 326  true:0272 false:0141
 0141: 0x15 0x82 0x00 0x00000145   jeq 325  true:0272 false:0142
 0142: 0x15 0x81 0x7d 0x00000144   jeq 324  true:0272 false:0268
 0143: 0x15 0x80 0x00 0x00000143   jeq 323  true:0272 false:0144
 0144: 0x15 0x7f 0x00 0x00000142   jeq 322  true:0272 false:0145
 0145: 0x15 0x7e 0x00 0x00000141   jeq 321  true:0272 false:0146
 0146: 0x15 0x7d 0x79 0x00000140   jeq 320  true:0272 false:0268
 0147: 0x25 0x00 0x09 0x00000137   jgt 311  true:0148 false:0157
 0148: 0x25 0x00 0x04 0x0000013b   jgt 315  true:0149 false:0153
 0149: 0x15 0x7a 0x00 0x0000013f   jeq 319  true:0272 false:0150
 0150: 0x15 0x79 0x00 0x0000013e   jeq 318  true:0272 false:0151
 0151: 0x15 0x78 0x00 0x0000013d   jeq 317  true:0272 false:0152
 0152: 0x15 0x77 0x73 0x0000013c   jeq 316  true:0272 false:0268
 0153: 0x15 0x76 0x00 0x0000013b   jeq 315  true:0272 false:0154
 0154: 0x15 0x75 0x00 0x0000013a   jeq 314  true:0272 false:0155
 0155: 0x15 0x74 0x00 0x00000139   jeq 313  true:0272 false:0156
 0156: 0x15 0x73 0x6f 0x00000138   jeq 312  true:0272 false:0268
 0157: 0x25 0x00 0x04 0x00000133   jgt 307  true:0158 false:0162
 0158: 0x15 0x71 0x00 0x00000137   jeq 311  true:0272 false:0159
 0159: 0x15 0x70 0x00 0x00000136   jeq 310  true:0272 false:0160
 0160: 0x15 0x6f 0x00 0x00000135   jeq 309  true:0272 false:0161
 0161: 0x15 0x6e 0x6a 0x00000134   jeq 308  true:0272 false:0268
 0162: 0x15 0x6d 0x00 0x00000133   jeq 307  true:0272 false:0163
 0163: 0x15 0x6c 0x00 0x00000132   jeq 306  true:0272 false:0164
 0164: 0x15 0x6b 0x00 0x00000131   jeq 305  true:0272 false:0165
 0165: 0x15 0x6a 0x66 0x00000130   jeq 304  true:0272 false:0268
 0166: 0x25 0x00 0x50 0x000000ec   jgt 236  true:0167 false:0247
 0167: 0x25 0x00 0x27 0x0000010d   jgt 269  true:0168 false:0207
 0168: 0x25 0x00 0x13 0x0000011f   jgt 287  true:0169 false:0188
 0169: 0x25 0x00 0x09 0x00000127   jgt 295  true:0170 false:0179
 0170: 0x25 0x00 0x04 0x0000012b   jgt 299  true:0171 false:0175
 0171: 0x15 0x64 0x00 0x0000012f   jeq 303  true:0272 false:0172
 0172: 0x15 0x63 0x00 0x0000012e   jeq 302  true:0272 false:0173
 0173: 0x15 0x62 0x00 0x0000012d   jeq 301  true:0272 false:0174
 0174: 0x15 0x61 0x5d 0x0000012c   jeq 300  true:0272 false:0268
 0175: 0x15 0x60 0x00 0x0000012b   jeq 299  true:0272 false:0176
 0176: 0x15 0x5f 0x00 0x0000012a   jeq 298  true:0272 false:0177
 0177: 0x15 0x5e 0x00 0x00000129   jeq 297  true:0272 false:0178
 0178: 0x15 0x5d 0x59 0x00000128   jeq 296  true:0272 false:0268
 0179: 0x25 0x00 0x04 0x00000123   jgt 291  true:0180 false:0184
 0180: 0x15 0x5b 0x00 0x00000127   jeq 295  true:0272 false:0181
 0181: 0x15 0x5a 0x00 0x00000126   jeq 294  true:0272 false:0182
 0182: 0x15 0x59 0x00 0x00000125   jeq 293  true:0272 false:0183
 0183: 0x15 0x58 0x54 0x00000124   jeq 292  true:0272 false:0268
 0184: 0x15 0x57 0x00 0x00000123   jeq 291  true:0272 false:0185
 0185: 0x15 0x56 0x00 0x00000122   jeq 290  true:0272 false:0186
 0186: 0x15 0x55 0x00 0x00000121   jeq 289  true:0272 false:0187
 0187: 0x15 0x2a 0x50 0x00000120   jeq 288  true:0230 false:0268
 0188: 0x25 0x00 0x09 0x00000116   jgt 278  true:0189 false:0198
 0189: 0x25 0x00 0x04 0x0000011a   jgt 282  true:0190 false:0194
 0190: 0x15 0x27 0x00 0x0000011f   jeq 287  true:0230 false:0191
 0191: 0x15 0x26 0x00 0x0000011e   jeq 286  true:0230 false:0192
 0192: 0x15 0x4f 0x00 0x0000011c   jeq 284  true:0272 false:0193
 0193: 0x15 0x24 0x4a 0x0000011b   jeq 283  true:0230 false:0268
 0194: 0x15 0x4d 0x00 0x0000011a   jeq 282  true:0272 false:0195
 0195: 0x15 0x4c 0x00 0x00000119   jeq 281  true:0272 false:0196
 0196: 0x15 0x4b 0x00 0x00000118   jeq 280  true:0272 false:0197
 0197: 0x15 0x4a 0x46 0x00000117   jeq 279  true:0272 false:0268
 0198: 0x25 0x00 0x04 0x00000112   jgt 274  true:0199 false:0203
 0199: 0x15 0x48 0x00 0x00000116   jeq 278  true:0272 false:0200
 0200: 0x15 0x47 0x00 0x00000115   jeq 277  true:0272 false:0201
 0201: 0x15 0x46 0x00 0x00000114   jeq 276  true:0272 false:0202
 0202: 0x15 0x45 0x41 0x00000113   jeq 275  true:0272 false:0268
 0203: 0x15 0x44 0x00 0x00000112   jeq 274  true:0272 false:0204
 0204: 0x15 0x43 0x00 0x00000110   jeq 272  true:0272 false:0205
 0205: 0x15 0x42 0x00 0x0000010f   jeq 271  true:0272 false:0206
 0206: 0x15 0x41 0x3d 0x0000010e   jeq 270  true:0272 false:0268
 0207: 0x25 0x00 0x13 0x000000fd   jgt 253  true:0208 false:0227
 0208: 0x25 0x00 0x09 0x00000105   jgt 261  true:0209 false:0218
 0209: 0x25 0x00 0x04 0x00000109   jgt 265  true:0210 false:0214
 0210: 0x15 0x3d 0x00 0x0000010d   jeq 269  true:0272 false:0211
 0211: 0x15 0x3c 0x00 0x0000010c   jeq 268  true:0272 false:0212
 0212: 0x15 0x3b 0x00 0x0000010b   jeq 267  true:0272 false:0213
 0213: 0x15 0x3a 0x36 0x0000010a   jeq 266  true:0272 false:0268
 0214: 0x15 0x39 0x00 0x00000109   jeq 265  true:0272 false:0215
 0215: 0x15 0x0e 0x00 0x00000108   jeq 264  true:0230 false:0216
 0216: 0x15 0x37 0x00 0x00000107   jeq 263  true:0272 false:0217
 0217: 0x15 0x36 0x32 0x00000106   jeq 262  true:0272 false:0268
 0218: 0x25 0x00 0x04 0x00000101   jgt 257  true:0219 false:0223
 0219: 0x15 0x34 0x00 0x00000105   jeq 261  true:0272 false:0220
 0220: 0x15 0x33 0x00 0x00000104   jeq 260  true:0272 false:0221
 0221: 0x15 0x32 0x00 0x00000103   jeq 259  true:0272 false:0222
 0222: 0x15 0x31 0x2d 0x00000102   jeq 258  true:0272 false:0268
 0223: 0x15 0x30 0x00 0x00000101   jeq 257  true:0272 false:0224
 0224: 0x15 0x2f 0x00 0x00000100   jeq 256  true:0272 false:0225
 0225: 0x15 0x2e 0x00 0x000000ff   jeq 255  true:0272 false:0226
 0226: 0x15 0x2d 0x29 0x000000fe   jeq 254  true:0272 false:0268
 0227: 0x25 0x00 0x0a 0x000000f4   jgt 244  true:0228 false:0238
 0228: 0x25 0x00 0x05 0x000000f8   jgt 248  true:0229 false:0234
 0229: 0x15 0x00 0x01 0x000000fd   jeq 253  true:0230 false:0231
 0230: 0x06 0x00 0x00 0x00050001   ret ERRNO(1)
 0231: 0x15 0x28 0x00 0x000000fc   jeq 252  true:0272 false:0232
 0232: 0x15 0x27 0x00 0x000000fa   jeq 250  true:0272 false:0233
 0233: 0x15 0x26 0x22 0x000000f9   jeq 249  true:0272 false:0268
 0234: 0x15 0x25 0x00 0x000000f8   jeq 248  true:0272 false:0235
 0235: 0x15 0x24 0x00 0x000000f7   jeq 247  true:0272 false:0236
 0236: 0x15 0x23 0x00 0x000000f6   jeq 246  true:0272 false:0237
 0237: 0x15 0x22 0x1e 0x000000f5   jeq 245  true:0272 false:0268
 0238: 0x25 0x00 0x04 0x000000f0   jgt 240  true:0239 false:0243
 0239: 0x15 0x20 0x00 0x000000f4   jeq 244  true:0272 false:0240
 0240: 0x15 0x1f 0x00 0x000000f3   jeq 243  true:0272 false:0241
 0241: 0x15 0x1e 0x00 0x000000f2   jeq 242  true:0272 false:0242
 0242: 0x15 0x1d 0x19 0x000000f1   jeq 241  true:0272 false:0268
 0243: 0x15 0x1c 0x00 0x000000f0   jeq 240  true:0272 false:0244
 0244: 0x15 0x1b 0x00 0x000000ef   jeq 239  true:0272 false:0245
 0245: 0x15 0x1a 0x00 0x000000ee   jeq 238  true:0272 false:0246
 0246: 0x15 0x19 0x15 0x000000ed   jeq 237  true:0272 false:0268
 0247: 0x25 0x00 0x29 0x000000ca   jgt 202  true:0248 false:0289
 0248: 0x25 0x00 0x14 0x000000da   jgt 218  true:0249 false:0269
 0249: 0x25 0x00 0x09 0x000000e4   jgt 228  true:0250 false:0259
 0250: 0x25 0x00 0x04 0x000000e8   jgt 232  true:0251 false:0255
 0251: 0x15 0x14 0x00 0x000000ec   jeq 236  true:0272 false:0252
 0252: 0x15 0x13 0x00 0x000000eb   jeq 235  true:0272 false:0253
 0253: 0x15 0x12 0x00 0x000000ea   jeq 234  true:0272 false:0254
 0254: 0x15 0x11 0x0d 0x000000e9   jeq 233  true:0272 false:0268
 0255: 0x15 0x10 0x00 0x000000e8   jeq 232  true:0272 false:0256
 0256: 0x15 0x0f 0x00 0x000000e7   jeq 231  true:0272 false:0257
 0257: 0x15 0x0e 0x00 0x000000e6   jeq 230  true:0272 false:0258
 0258: 0x15 0x0d 0x09 0x000000e5   jeq 229  true:0272 false:0268
 0259: 0x25 0x00 0x04 0x000000e0   jgt 224  true:0260 false:0264
 0260: 0x15 0x0b 0x00 0x000000e4   jeq 228  true:0272 false:0261
 0261: 0x15 0x0a 0x00 0x000000e3   jeq 227  true:0272 false:0262
 0262: 0x15 0x09 0x00 0x000000e2   jeq 226  true:0272 false:0263
 0263: 0x15 0x08 0x04 0x000000e1   jeq 225  true:0272 false:0268
 0264: 0x15 0x07 0x00 0x000000e0   jeq 224  true:0272 false:0265
 0265: 0x15 0x06 0x00 0x000000dd   jeq 221  true:0272 false:0266
 0266: 0x15 0x05 0x00 0x000000dc   jeq 220  true:0272 false:0267
 0267: 0x15 0x04 0x00 0x000000db   jeq 219  true:0272 false:0268
 0268: 0x06 0x00 0x00 0x00050026   ret ERRNO(38)
 0269: 0x25 0x00 0x0a 0x000000d2   jgt 210  true:0270 false:0280
 0270: 0x25 0x00 0x05 0x000000d6   jgt 214  true:0271 false:0276
 0271: 0x15 0x00 0x01 0x000000da   jeq 218  true:0272 false:0273
 0272: 0x06 0x00 0x00 0x7fff0000   ret ALLOW
 0273: 0x15 0xff 0x00 0x000000d9   jeq 217  true:0529 false:0274
 0274: 0x15 0xfe 0x00 0x000000d8   jeq 216  true:0529 false:0275
 0275: 0x15 0xfd 0xfc 0x000000d7   jeq 215  true:0529 false:0528
 0276: 0x15 0xfc 0x00 0x000000d6   jeq 214  true:0529 false:0277
 0277: 0x15 0xfb 0x00 0x000000d5   jeq 213  true:0529 false:0278
 0278: 0x15 0xfa 0x00 0x000000d4   jeq 212  true:0529 false:0279
 0279: 0x15 0xf9 0xf8 0x000000d3   jeq 211  true:0529 false:0528
 0280: 0x25 0x00 0x04 0x000000ce   jgt 206  true:0281 false:0285
 0281: 0x15 0xf7 0x00 0x000000d2   jeq 210  true:0529 false:0282
 0282: 0x15 0xf6 0x00 0x000000d1   jeq 209  true:0529 false:0283
 0283: 0x15 0xf5 0x00 0x000000d0   jeq 208  true:0529 false:0284
 0284: 0x15 0xf4 0xf3 0x000000cf   jeq 207  true:0529 false:0528
 0285: 0x15 0xf3 0x00 0x000000ce   jeq 206  true:0529 false:0286
 0286: 0x15 0xf2 0x00 0x000000cd   jeq 205  true:0529 false:0287
 0287: 0x15 0xf1 0x00 0x000000cc   jeq 204  true:0529 false:0288
 0288: 0x15 0xf0 0xef 0x000000cb   jeq 203  true:0529 false:0528
 0289: 0x25 0x00 0x13 0x000000b9   jgt 185  true:0290 false:0309
 0290: 0x25 0x00 0x09 0x000000c2   jgt 194  true:0291 false:0300
 0291: 0x25 0x00 0x04 0x000000c6   jgt 198  true:0292 false:0296
 0292: 0x15 0xec 0x00 0x000000ca   jeq 202  true:0529 false:0293
 0293: 0x15 0xeb 0x00 0x000000c9   jeq 201  true:0529 false:0294
 0294: 0x15 0xea 0x00 0x000000c8   jeq 200  true:0529 false:0295
 0295: 0x15 0xe9 0xe8 0x000000c7   jeq 199  true:0529 false:0528
 0296: 0x15 0xe8 0x00 0x000000c6   jeq 198  true:0529 false:0297
 0297: 0x15 0xe7 0x00 0x000000c5   jeq 197  true:0529 false:0298
 0298: 0x15 0xe6 0x00 0x000000c4   jeq 196  true:0529 false:0299
 0299: 0x15 0xe5 0xe4 0x000000c3   jeq 195  true:0529 false:0528
 0300: 0x25 0x00 0x04 0x000000be   jgt 190  true:0301 false:0305
 0301: 0x15 0xe3 0x00 0x000000c2   jeq 194  true:0529 false:0302
 0302: 0x15 0xe2 0x00 0x000000c1   jeq 193  true:0529 false:0303
 0303: 0x15 0xe1 0x00 0x000000c0   jeq 192  true:0529 false:0304
 0304: 0x15 0xe0 0xdf 0x000000bf   jeq 191  true:0529 false:0528
 0305: 0x15 0xdf 0x00 0x000000be   jeq 190  true:0529 false:0306
 0306: 0x15 0xc0 0x00 0x000000bc   jeq 188  true:0499 false:0307
 0307: 0x15 0xdd 0x00 0x000000bb   jeq 187  true:0529 false:0308
 0308: 0x15 0xdc 0xdb 0x000000ba   jeq 186  true:0529 false:0528
 0309: 0x25 0x00 0x09 0x000000b1   jgt 177  true:0310 false:0319
 0310: 0x25 0x00 0x04 0x000000b5   jgt 181  true:0311 false:0315
 0311: 0x15 0xd9 0x00 0x000000b9   jeq 185  true:0529 false:0312
 0312: 0x15 0xd8 0x00 0x000000b8   jeq 184  true:0529 false:0313
 0313: 0x15 0xd7 0x00 0x000000b7   jeq 183  true:0529 false:0314
 0314: 0x15 0xd6 0xd5 0x000000b6   jeq 182  true:0529 false:0528
 0315: 0x15 0xd5 0x00 0x000000b5   jeq 181  true:0529 false:0316
 0316: 0x15 0xd4 0x00 0x000000b4   jeq 180  true:0529 false:0317
 0317: 0x15 0xd3 0x00 0x000000b3   jeq 179  true:0529 false:0318
 0318: 0x15 0xd2 0xd1 0x000000b2   jeq 178  true:0529 false:0528
 0319: 0x25 0x00 0x04 0x000000ad   jgt 173  true:0320 false:0324
 0320: 0x15 0xd0 0x00 0x000000b1   jeq 177  true:0529 false:0321
 0321: 0x15 0xcf 0x00 0x000000b0   jeq 176  true:0529 false:0322
 0322: 0x15 0xce 0x00 0x000000af   jeq 175  true:0529 false:0323
 0323: 0x15 0xcd 0xcc 0x000000ae   jeq 174  true:0529 false:0528
 0324: 0x15 0xcc 0x00 0x000000ad   jeq 173  true:0529 false:0325
 0325: 0x15 0xcb 0x00 0x000000ac   jeq 172  true:0529 false:0326
 0326: 0x15 0xca 0x00 0x000000ab   jeq 171  true:0529 false:0327
 0327: 0x15 0xc9 0xc8 0x000000aa   jeq 170  true:0529 false:0528
 0328: 0x25 0x00 0x9f 0x00000022   jgt 34   true:0329 false:0488
 0329: 0x25 0x00 0x4f 0x00000068   jgt 104  true:0330 false:0409
 0330: 0x25 0x00 0x27 0x00000088   jgt 136  true:0331 false:0370
 0331: 0x25 0x00 0x13 0x00000099   jgt 153  true:0332 false:0351
 0332: 0x25 0x00 0x09 0x000000a1   jgt 161  true:0333 false:0342
 0333: 0x25 0x00 0x04 0x000000a5   jgt 165  true:0334 false:0338
 0334: 0x15 0xa4 0x00 0x000000a9   jeq 169  true:0499 false:0335
 0335: 0x15 0xc1 0x00 0x000000a8   jeq 168  true:0529 false:0336
 0336: 0x15 0xa2 0x00 0x000000a7   jeq 167  true:0499 false:0337
 0337: 0x15 0xa1 0xbe 0x000000a6   jeq 166  true:0499 false:0528
 0338: 0x15 0xbe 0x00 0x000000a5   jeq 165  true:0529 false:0339
 0339: 0x15 0xbd 0x00 0x000000a4   jeq 164  true:0529 false:0340
 0340: 0x15 0xbc 0x00 0x000000a3   jeq 163  true:0529 false:0341
 0341: 0x15 0xbb 0xba 0x000000a2   jeq 162  true:0529 false:0528
 0342: 0x25 0x00 0x04 0x0000009d   jgt 157  true:0343 false:0347
 0343: 0x15 0xb9 0x00 0x000000a1   jeq 161  true:0529 false:0344
 0344: 0x15 0xb8 0x00 0x000000a0   jeq 160  true:0529 false:0345
 0345: 0x15 0xb7 0x00 0x0000009f   jeq 159  true:0529 false:0346
 0346: 0x15 0xb6 0xb5 0x0000009e   jeq 158  true:0529 false:0528
 0347: 0x15 0xb5 0x00 0x0000009d   jeq 157  true:0529 false:0348
 0348: 0x15 0xb4 0x00 0x0000009c   jeq 156  true:0529 false:0349
 0349: 0x15 0xb3 0x00 0x0000009b   jeq 155  true:0529 false:0350
 0350: 0x15 0xb2 0xb1 0x0000009a   jeq 154  true:0529 false:0528
 0351: 0x25 0x00 0x09 0x00000091   jgt 145  true:0352 false:0361
 0352: 0x25 0x00 0x04 0x00000095   jgt 149  true:0353 false:0357
 0353: 0x15 0x91 0x00 0x00000099   jeq 153  true:0499 false:0354
 0354: 0x15 0x90 0x00 0x00000098   jeq 152  true:0499 false:0355
 0355: 0x15 0x8f 0x00 0x00000097   jeq 151  true:0499 false:0356
 0356: 0x15 0x8e 0xab 0x00000096   jeq 150  true:0499 false:0528
 0357: 0x15 0x8d 0x00 0x00000095   jeq 149  true:0499 false:0358
 0358: 0x15 0xaa 0x00 0x00000094   jeq 148  true:0529 false:0359
 0359: 0x15 0xa9 0x00 0x00000093   jeq 147  true:0529 false:0360
 0360: 0x15 0xa8 0xa7 0x00000092   jeq 146  true:0529 false:0528
 0361: 0x25 0x00 0x04 0x0000008d   jgt 141  true:0362 false:0366
 0362: 0x15 0xa6 0x00 0x00000091   jeq 145  true:0529 false:0363
 0363: 0x15 0xa5 0x00 0x00000090   jeq 144  true:0529 false:0364
 0364: 0x15 0xa4 0x00 0x0000008f   jeq 143  true:0529 false:0365
 0365: 0x15 0xa3 0xa2 0x0000008e   jeq 142  true:0529 false:0528
 0366: 0x15 0xa2 0x00 0x0000008d   jeq 141  true:0529 false:0367
 0367: 0x15 0xa1 0x00 0x0000008c   jeq 140  true:0529 false:0368
 0368: 0x15 0xa0 0x00 0x0000008b   jeq 139  true:0529 false:0369
 0369: 0x15 0x9f 0x9e 0x0000008a   jeq 138  true:0529 false:0528
 0370: 0x25 0x00 0x13 0x00000078   jgt 120  true:0371 false:0390
 0371: 0x25 0x00 0x09 0x00000080   jgt 128  true:0372 false:0381
 0372: 0x25 0x00 0x04 0x00000084   jgt 132  true:0373 false:0377
 0373: 0x15 0x9b 0x00 0x00000088   jeq 136  true:0529 false:0374
 0374: 0x15 0x7c 0x00 0x00000087   jeq 135  true:0499 false:0375
 0375: 0x15 0x7b 0x00 0x00000086   jeq 134  true:0499 false:0376
 0376: 0x15 0x98 0x97 0x00000085   jeq 133  true:0529 false:0528
 0377: 0x15 0x97 0x00 0x00000084   jeq 132  true:0529 false:0378
 0378: 0x15 0x78 0x00 0x00000083   jeq 131  true:0499 false:0379
 0379: 0x15 0x77 0x00 0x00000082   jeq 130  true:0499 false:0380
 0380: 0x15 0x76 0x93 0x00000081   jeq 129  true:0499 false:0528
 0381: 0x25 0x00 0x04 0x0000007c   jgt 124  true:0382 false:0386
 0382: 0x15 0x74 0x00 0x00000080   jeq 128  true:0499 false:0383
 0383: 0x15 0x73 0x00 0x0000007f   jeq 127  true:0499 false:0384
 0384: 0x15 0x90 0x00 0x0000007e   jeq 126  true:0529 false:0385
 0385: 0x15 0x8f 0x8e 0x0000007d   jeq 125  true:0529 false:0528
 0386: 0x15 0x70 0x00 0x0000007c   jeq 124  true:0499 false:0387
 0387: 0x15 0x6f 0x00 0x0000007b   jeq 123  true:0499 false:0388
 0388: 0x15 0x8c 0x00 0x0000007a   jeq 122  true:0529 false:0389
 0389: 0x15 0x8b 0x8a 0x00000079   jeq 121  true:0529 false:0528
 0390: 0x25 0x00 0x09 0x00000070   jgt 112  true:0391 false:0400
 0391: 0x25 0x00 0x04 0x00000074   jgt 116  true:0392 false:0396
 0392: 0x15 0x88 0x00 0x00000078   jeq 120  true:0529 false:0393
 0393: 0x15 0x87 0x00 0x00000077   jeq 119  true:0529 false:0394
 0394: 0x15 0x86 0x00 0x00000076   jeq 118  true:0529 false:0395
 0395: 0x15 0x85 0x84 0x00000075   jeq 117  true:0529 false:0528
 0396: 0x15 0x84 0x00 0x00000074   jeq 116  true:0529 false:0397
 0397: 0x15 0x65 0x00 0x00000073   jeq 115  true:0499 false:0398
 0398: 0x15 0x82 0x00 0x00000072   jeq 114  true:0529 false:0399
 0399: 0x15 0x63 0x80 0x00000071   jeq 113  true:0499 false:0528
 0400: 0x25 0x00 0x04 0x0000006c   jgt 108  true:0401 false:0405
 0401: 0x15 0x61 0x00 0x00000070   jeq 112  true:0499 false:0402
 0402: 0x15 0x7e 0x00 0x0000006f   jeq 111  true:0529 false:0403
 0403: 0x15 0x5f 0x00 0x0000006e   jeq 110  true:0499 false:0404
 0404: 0x15 0x7c 0x7b 0x0000006d   jeq 109  true:0529 false:0528
 0405: 0x15 0x7b 0x00 0x0000006c   jeq 108  true:0529 false:0406
 0406: 0x15 0x7a 0x00 0x0000006b   jeq 107  true:0529 false:0407
 0407: 0x15 0x79 0x00 0x0000006a   jeq 106  true:0529 false:0408
 0408: 0x15 0x78 0x77 0x00000069   jeq 105  true:0529 false:0528
 0409: 0x25 0x00 0x27 0x00000047   jgt 71   true:0410 false:0449
 0410: 0x25 0x00 0x13 0x00000057   jgt 87   true:0411 false:0430
 0411: 0x25 0x00 0x09 0x0000005f   jgt 95   true:0412 false:0421
 0412: 0x25 0x00 0x04 0x00000064   jgt 100  true:0413 false:0417
 0413: 0x15 0x73 0x00 0x00000068   jeq 104  true:0529 false:0414
 0414: 0x15 0x54 0x00 0x00000067   jeq 103  true:0499 false:0415
 0415: 0x15 0x71 0x00 0x00000066   jeq 102  true:0529 false:0416
 0416: 0x15 0x52 0x6f 0x00000065   jeq 101  true:0499 false:0528
 0417: 0x15 0x6f 0x00 0x00000064   jeq 100  true:0529 false:0418
 0418: 0x15 0x6e 0x00 0x00000063   jeq 99   true:0529 false:0419
 0419: 0x15 0x6d 0x00 0x00000061   jeq 97   true:0529 false:0420
 0420: 0x15 0x6c 0x6b 0x00000060   jeq 96   true:0529 false:0528
 0421: 0x25 0x00 0x04 0x0000005b   jgt 91   true:0422 false:0426
 0422: 0x15 0x6a 0x00 0x0000005f   jeq 95   true:0529 false:0423
 0423: 0x15 0x69 0x00 0x0000005e   jeq 94   true:0529 false:0424
 0424: 0x15 0x68 0x00 0x0000005d   jeq 93   true:0529 false:0425
 0425: 0x15 0x67 0x66 0x0000005c   jeq 92   true:0529 false:0528
 0426: 0x15 0x66 0x00 0x0000005b   jeq 91   true:0529 false:0427
 0427: 0x15 0x65 0x00 0x0000005a   jeq 90   true:0529 false:0428
 0428: 0x15 0x64 0x00 0x00000059   jeq 89   true:0529 false:0429
 0429: 0x15 0x63 0x62 0x00000058   jeq 88   true:0529 false:0528
 0430: 0x25 0x00 0x09 0x0000004f   jgt 79   true:0431 false:0440
 0431: 0x25 0x00 0x04 0x00000053   jgt 83   true:0432 false:0436
 0432: 0x15 0x42 0x00 0x00000057   jeq 87   true:0499 false:0433
 0433: 0x15 0x41 0x00 0x00000056   jeq 86   true:0499 false:0434
 0434: 0x15 0x5e 0x00 0x00000055   jeq 85   true:0529 false:0435
 0435: 0x15 0x5d 0x5c 0x00000054   jeq 84   true:0529 false:0528
 0436: 0x15 0x5c 0x00 0x00000053   jeq 83   true:0529 false:0437
 0437: 0x15 0x5b 0x00 0x00000052   jeq 82   true:0529 false:0438
 0438: 0x15 0x5a 0x00 0x00000051   jeq 81   true:0529 false:0439
 0439: 0x15 0x59 0x58 0x00000050   jeq 80   true:0529 false:0528
 0440: 0x25 0x00 0x04 0x0000004b   jgt 75   true:0441 false:0445
 0441: 0x15 0x39 0x00 0x0000004f   jeq 79   true:0499 false:0442
 0442: 0x15 0x56 0x00 0x0000004e   jeq 78   true:0529 false:0443
 0443: 0x15 0x55 0x00 0x0000004d   jeq 77   true:0529 false:0444
 0444: 0x15 0x54 0x53 0x0000004c   jeq 76   true:0529 false:0528
 0445: 0x15 0x53 0x00 0x0000004b   jeq 75   true:0529 false:0446
 0446: 0x15 0x52 0x00 0x0000004a   jeq 74   true:0529 false:0447
 0447: 0x15 0x51 0x00 0x00000049   jeq 73   true:0529 false:0448
 0448: 0x15 0x50 0x4f 0x00000048   jeq 72   true:0529 false:0528
 0449: 0x25 0x00 0x13 0x00000034   jgt 52   true:0450 false:0469
 0450: 0x25 0x00 0x09 0x0000003f   jgt 63   true:0451 false:0460
 0451: 0x25 0x00 0x04 0x00000043   jgt 67   true:0452 false:0456
 0452: 0x15 0x4c 0x00 0x00000047   jeq 71   true:0529 false:0453
 0453: 0x15 0x4b 0x00 0x00000046   jeq 70   true:0529 false:0454
 0454: 0x15 0x2c 0x00 0x00000045   jeq 69   true:0499 false:0455
 0455: 0x15 0x2b 0x48 0x00000044   jeq 68   true:0499 false:0528
 0456: 0x15 0x48 0x00 0x00000043   jeq 67   true:0529 false:0457
 0457: 0x15 0x47 0x00 0x00000042   jeq 66   true:0529 false:0458
 0458: 0x15 0x46 0x00 0x00000041   jeq 65   true:0529 false:0459
 0459: 0x15 0x45 0x44 0x00000040   jeq 64   true:0529 false:0528
 0460: 0x25 0x00 0x04 0x0000003b   jgt 59   true:0461 false:0465
 0461: 0x15 0x43 0x00 0x0000003f   jeq 63   true:0529 false:0462
 0462: 0x15 0x24 0x00 0x0000003e   jeq 62   true:0499 false:0463
 0463: 0x15 0x41 0x00 0x0000003d   jeq 61   true:0529 false:0464
 0464: 0x15 0x40 0x3f 0x0000003c   jeq 60   true:0529 false:0528
 0465: 0x15 0x3f 0x00 0x0000003b   jeq 59   true:0529 false:0466
 0466: 0x15 0x3e 0x00 0x00000039   jeq 57   true:0529 false:0467
 0467: 0x15 0x3d 0x00 0x00000037   jeq 55   true:0529 false:0468
 0468: 0x15 0x3c 0x3b 0x00000036   jeq 54   true:0529 false:0528
 0469: 0x25 0x00 0x09 0x0000002b   jgt 43   true:0470 false:0479
 0470: 0x25 0x00 0x04 0x00000030   jgt 48   true:0471 false:0475
 0471: 0x15 0x39 0x00 0x00000034   jeq 52   true:0529 false:0472
 0472: 0x15 0x1a 0x00 0x00000033   jeq 51   true:0499 false:0473
 0473: 0x15 0x37 0x00 0x00000032   jeq 50   true:0529 false:0474
 0474: 0x15 0x36 0x35 0x00000031   jeq 49   true:0529 false:0528
 0475: 0x15 0x35 0x00 0x00000030   jeq 48   true:0529 false:0476
 0476: 0x15 0x34 0x00 0x0000002f   jeq 47   true:0529 false:0477
 0477: 0x15 0x33 0x00 0x0000002e   jeq 46   true:0529 false:0478
 0478: 0x15 0x32 0x31 0x0000002d   jeq 45   true:0529 false:0528
 0479: 0x25 0x00 0x04 0x00000027   jgt 39   true:0480 false:0484
 0480: 0x15 0x30 0x00 0x0000002b   jeq 43   true:0529 false:0481
 0481: 0x15 0x2f 0x00 0x0000002a   jeq 42   true:0529 false:0482
 0482: 0x15 0x2e 0x00 0x00000029   jeq 41   true:0529 false:0483
 0483: 0x15 0x2d 0x2c 0x00000028   jeq 40   true:0529 false:0528
 0484: 0x15 0x2c 0x00 0x00000027   jeq 39   true:0529 false:0485
 0485: 0x15 0x2b 0x00 0x00000026   jeq 38   true:0529 false:0486
 0486: 0x15 0x2a 0x00 0x00000025   jeq 37   true:0529 false:0487
 0487: 0x15 0x29 0x28 0x00000024   jeq 36   true:0529 false:0528
 0488: 0x25 0x00 0x14 0x0000000f   jgt 15   true:0489 false:0509
 0489: 0x25 0x00 0x0a 0x00000018   jgt 24   true:0490 false:0500
 0490: 0x25 0x00 0x04 0x0000001c   jgt 28   true:0491 false:0495
 0491: 0x15 0x25 0x00 0x00000022   jeq 34   true:0529 false:0492
 0492: 0x15 0x24 0x00 0x00000021   jeq 33   true:0529 false:0493
 0493: 0x15 0x23 0x00 0x0000001e   jeq 30   true:0529 false:0494
 0494: 0x15 0x22 0x21 0x0000001d   jeq 29   true:0529 false:0528
 0495: 0x15 0x21 0x00 0x0000001c   jeq 28   true:0529 false:0496
 0496: 0x15 0x20 0x00 0x0000001b   jeq 27   true:0529 false:0497
 0497: 0x15 0x1f 0x00 0x0000001a   jeq 26   true:0529 false:0498
 0498: 0x15 0x00 0x1d 0x00000019   jeq 25   true:0499 false:0528
 0499: 0x06 0x00 0x00 0x00050001   ret ERRNO(1)
 0500: 0x25 0x00 0x04 0x00000014   jgt 20   true:0501 false:0505
 0501: 0x15 0x1b 0x00 0x00000018   jeq 24   true:0529 false:0502
 0502: 0x15 0x1a 0x00 0x00000017   jeq 23   true:0529 false:0503
 0503: 0x15 0x19 0x00 0x00000016   jeq 22   true:0529 false:0504
 0504: 0x15 0x18 0x17 0x00000015   jeq 21   true:0529 false:0528
 0505: 0x15 0x17 0x00 0x00000014   jeq 20   true:0529 false:0506
 0506: 0x15 0x16 0x00 0x00000013   jeq 19   true:0529 false:0507
 0507: 0x15 0x15 0x00 0x00000012   jeq 18   true:0529 false:0508
 0508: 0x15 0x14 0x13 0x00000010   jeq 16   true:0529 false:0528
 0509: 0x25 0x00 0x09 0x00000007   jgt 7    true:0510 false:0519
 0510: 0x25 0x00 0x04 0x0000000b   jgt 11   true:0511 false:0515
 0511: 0x15 0x11 0x00 0x0000000f   jeq 15   true:0529 false:0512
 0512: 0x15 0x10 0x00 0x0000000e   jeq 14   true:0529 false:0513
 0513: 0x15 0x0f 0x00 0x0000000d   jeq 13   true:0529 false:0514
 0514: 0x15 0x0e 0x0d 0x0000000c   jeq 12   true:0529 false:0528
 0515: 0x15 0x0d 0x00 0x0000000b   jeq 11   true:0529 false:0516
 0516: 0x15 0x0c 0x00 0x0000000a   jeq 10   true:0529 false:0517
 0517: 0x15 0x0b 0x00 0x00000009   jeq 9    true:0529 false:0518
 0518: 0x15 0x0a 0x09 0x00000008   jeq 8    true:0529 false:0528
 0519: 0x25 0x00 0x04 0x00000003   jgt 3    true:0520 false:0524
 0520: 0x15 0x08 0x00 0x00000007   jeq 7    true:0529 false:0521
 0521: 0x15 0x07 0x00 0x00000006   jeq 6    true:0529 false:0522
 0522: 0x15 0x06 0x00 0x00000005   jeq 5    true:0529 false:0523
 0523: 0x15 0x05 0x04 0x00000004   jeq 4    true:0529 false:0528
 0524: 0x15 0x04 0x00 0x00000003   jeq 3    true:0529 false:0525
 0525: 0x15 0x03 0x00 0x00000002   jeq 2    true:0529 false:0526
 0526: 0x15 0x02 0x00 0x00000001   jeq 1    true:0529 false:0527
 0527: 0x15 0x01 0x00 0x00000000   jeq 0    true:0529 false:0528
 0528: 0x06 0x00 0x00 0x00050026   ret ERRNO(38)
 0529: 0x06 0x00 0x00 0x7fff0000   ret ALLOW

Sizes: 2952, 3392, 4240 bytes.
Addition of @known results only in a small growth. "Optimization" makes the
filter longer, but it should run more quickly. We probably want to enable this
everywhere. There is clear potential futher optmization though.
2020-08-24 20:05:25 +02:00
Zbigniew Jędrzejewski-Szmek 3573e032f2 nspawn: return ENOSYS by default, EPERM for "known" calls 2020-08-24 20:05:17 +02:00
Zbigniew Jędrzejewski-Szmek 000c05207d shared/seccomp-util: added functionality to make list of filtred syscalls
While at it, start removing the "seccomp_" prefix from our
own functions. It is used by libseccomp.
2020-08-24 20:05:09 +02:00
Zbigniew Jędrzejewski-Szmek 752fedbea7 shared/syscall-list: filter out some obviously platform-specific syscalls 2020-08-24 20:05:02 +02:00
Zbigniew Jędrzejewski-Szmek 077e8fc0ca shared/seccomp: reduce scope of indexing variables 2020-08-24 20:04:54 +02:00
Zbigniew Jędrzejewski-Szmek 95aac01259 shared: add @known syscall list 2020-08-24 20:04:17 +02:00
Zbigniew Jędrzejewski-Szmek 955a632971 tree-wide: use sd_bus_error_has_names() in more places 2020-08-24 19:48:26 +02:00
Zbigniew Jędrzejewski-Szmek 8e34f4cc62 nss-resolve: treat BUS_ERROR_NO_SUCH_UNIT the same as SD_BUS_ERROR_SERVICE_UNKNOWN too
Seems safer to do so.
2020-08-24 19:48:26 +02:00
Zbigniew Jędrzejewski-Szmek 73d3ac8e24 various: treat BUS_ERROR_NO_SUCH_UNIT the same as SD_BUS_ERROR_SERVICE_UNKNOWN
We return BUS_ERROR_NO_SUCH_UNIT a.k.a. org.freedesktop.systemd1.NoSuchUnit
in various places. In #16813:
Aug 22 06:14:48 core sudo[2769199]: pam_systemd_home(sudo:account): Failed to query user record: Unit dbus-org.freedesktop.home1.service not found.
Aug 22 06:14:48 core dbus-daemon[5311]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.home1.service': Unit dbus-org.freedesktop.home1.service not found.
Aug 22 06:14:48 core dbus-daemon[5311]: [system] Activating via systemd: service name='org.freedesktop.home1' unit='dbus-org.freedesktop.home1.service' requested by ':1.6564' (uid=0 pid=2769199 comm="sudo su ")

This particular error comes from bus_unit_validate_load_state() in pid1:
  case UNIT_NOT_FOUND:
       return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s not found.", u->id);

It seems possible that we should return a different error, but it doesn't really
matter: if we change pid1 to return a different error, we still need to handle
BUS_ERROR_NO_SUCH_UNIT as in this patch to handle pid1 with current code.
2020-08-24 19:48:26 +02:00
Zbigniew Jędrzejewski-Szmek 2b07ec316a sd-bus: add a variant of sd_bus_error_has_name() that takes multiple names 2020-08-24 19:48:22 +02:00
Zbigniew Jędrzejewski-Szmek b6ce3d2c01 basic/missing_syscall: fix syscall numbers for arm64 :( 2020-08-24 19:27:52 +02:00
Zbigniew Jędrzejewski-Szmek af513d512f basic/missing_syscall: add missing calls for s390x/ppc64el/arm64 2020-08-24 19:27:06 +02:00
Zbigniew Jędrzejewski-Szmek 5134e18eed missing_syscall: verify our fallback numbers when possible
Instead of defining the numbers only as fallback, always define our fallback
number, and if we have the real __NR_foo define, assert that our number matches
the real one.

This will result in warnings when our fallback number is not defined, even if
the kernel headers are new enough to define __NR_foo. This will probably annoy
people compiling for seldom-used architectures, but hopefully it'll provide
motivation to add the missing fallback defines.

The upside is that we have a higher chance of catching the cases where we got
the number wrong. Calling the wrong syscall is quite problematic, and with some
back luck, it might take us a long time to notice that we got the number wrong
on some rarely used architecture.

Also, rework some of the fallback wrappers to not call the syscall with a
negative number (that'd fail, but we'd got to the kernel and back). It seems
nicer to let the compiler know that this can never succeed.
2020-08-24 19:22:05 +02:00
Clemens Gruber f594b5feab network: can: Fix CAN initialization
When introducing CAN-FD support, the .can_fd_mode was not initalized
with -1 and due to cm.mask containing the CAN_CTRLMODE_FD bit, it was
not ignored when FDMode was not configured but instead disabled.
The same thing happened when listen-only mode support was introduced.

On chips that do not support these features, this lead to an error:
can0: Failed to configure CAN link: Operation not supported

Fix it by intializing all the CAN related tristate variables
(.can_listen_only, .can_fd_mode and .can_non_iso) to -1.
2020-08-24 09:33:25 +02:00
Zbigniew Jędrzejewski-Szmek 47ab95fe43 shared/install: fix preset operations for non-service instantiated units
Fixes https://github.com/coreos/ignition/issues/1064.
2020-08-22 12:00:19 +02:00
Zbigniew Jędrzejewski-Szmek de8be28e03 shared/install: reduce scope of iterator variables 2020-08-22 12:00:19 +02:00
Lennart Poettering 9aab8d7a98
Merge pull request #16804 from keszybz/conditionals-and-spelling-fixes
Conditionals and spelling fixes
2020-08-21 13:36:30 +02:00
Steve Dodd 44aaddad06 Request seccomp logging if SYSTEMD_LOG_SECCOMP environment variable is set. 2020-08-21 11:24:53 +02:00
Zbigniew Jędrzejewski-Szmek 3fb01017ee
Merge pull request #16686 from bluca/mount_images_opts
core: add mount options support for MountImages
2020-08-21 10:11:08 +02:00
Aurelien Jarno f9252236c8 seccomp: add support for riscv64
This patch adds seccomp support to the riscv64 architecture. seccomp
support is available in the riscv64 kernel since version 5.5, and it
has just been added to the libseccomp library.

riscv64 uses generic syscalls like aarch64, so I used that architecture
as a reference to find which code has to be modified.

With this patch, the testsuite passes successfully, including the
test-seccomp test. The system boots and works fine with kernel 5.4 (i.e.
without seccomp support) and kernel 5.5 (i.e. with seccomp support). I
have also verified that the "SystemCallFilter=~socket" option prevents a
service to use the ping utility when running on kernel 5.5.
2020-08-21 10:10:29 +02:00
Zbigniew Jędrzejewski-Szmek 990307c3da
Merge pull request #16803 from poettering/analyze-condition-rework
support missing conditions/asserts everywhere
2020-08-20 18:18:13 +02:00
Lennart Poettering cbed1dc8af mount-util: tweak how we find inaccessible device nodes
On new kernels (>= 5.8) unprivileged users may create the 0:0 character
device node. Which is great, as we can use that as inaccessible device
nodes if we run unprivileged. Hence, change how we find the right
inaccessible device inodes: when the user asks for a block device node,
but we have none, try the char device node first. If that doesn't exist,
fall back to the socket node as before.

This means that:

1. in the best case we'll return a node if the right device node type
2. otherwise we hopefully at least can return a device node if one asked
   for even if the type doesn't match (i.e. we return char instead of
   the requested block device node)
3. in the worst case (old kernels…) we'll return a socket node
2020-08-20 18:15:29 +02:00
Zbigniew Jędrzejewski-Szmek 2aed63f427 tree-wide: fix spelling of "fallback"
Similarly to "setup" vs. "set up", "fallback" is a noun, and "fall back"
is the verb. (This is pretty clear when we construct a sentence in the
present continous: "we are falling back" not "we are fallbacking").
2020-08-20 17:45:32 +02:00
Zbigniew Jędrzejewski-Szmek 7eac7b4c62 test-string-util: add a test for strjoin()
Strangely, we didn't have one so far. I mostly wanted to verify
that NULL can be used in any spot at behaves the same as "".
2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek c32c4352b4 test-acl-util: output more debug info
For some reason this failed in koji build on s390x:
--- command ---
16:12:46 PATH='/builddir/build/BUILD/systemd-stable-246.1/s390x-redhat-linux-gnu:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin' SYSTEMD_LANGUAGE_FALLBACK_MAP='/builddir/build/BUILD/systemd-stable-246.1/src/locale/language-fallback-map' SYSTEMD_KBD_MODEL_MAP='/builddir/build/BUILD/systemd-stable-246.1/src/locale/kbd-model-map' /builddir/build/BUILD/systemd-stable-246.1/s390x-redhat-linux-gnu/test-acl-util
--- stdout ---
-rw-r-----. 1 mockbuild mock 0 Aug  7 16:12 /tmp/test-empty.7RzmEc
other::---
--- stderr ---
Assertion 'r >= 0' failed at src/test/test-acl-util.c:42, function test_add_acls_for_user(). Aborting.
2020-08-20 17:42:13 +02:00
Lennart Poettering 5b14956385
Merge pull request #16543 from poettering/nspawn-run-host
nspawn: /run/host/ tweaks
2020-08-20 16:20:05 +02:00
Luca Boccassi 427353f668 core: add mount options support for MountImages
Follow the same model established for RootImage and RootImageOptions,
and allow to either append a single list of options or tuples of
partition_number:options.
2020-08-20 14:45:40 +01:00
Luca Boccassi 9ece644435 core: change RootImageOptions to use names instead of partition numbers
Follow the designations from the Discoverable Partitions Specification
2020-08-20 13:58:02 +01:00
Luca Boccassi bc8d56d305 core: use strv_split_colon_pairs when parsing RootImageOptions 2020-08-20 13:24:32 +01:00
Luca Boccassi c20acbb2bd core: cleanup unused variables
Leftovers from previous implementation of MountImages feature, unused now
2020-08-20 13:24:32 +01:00
Lennart Poettering c1093c34d7 sd-bus: fix error handling on readv()
let's make sure we collect the right error code from errno, otherwise
we'll see EPERM (i.e. error 1) for all errors readv() returns (since it
returns -1 on error), including EAGAIN.

This is definitely backport material.

A fix-up for 3691bcf3c5.

Fixes: #16699
2020-08-20 14:14:36 +02:00