dbus/test/data/invalid-messages/issue418.message-raw.hex
Simon McVittie d633016f73 test/data: Add messages that reproduce dbus/dbus#413, dbus/dbus#418
In debug builds with "embedded tests" enabled, these will automatically
be used as input for the message-internals test.

Some of the messages themselves are output from a fuzzer, others are
simplifications to include only one reason for lack of validity per
message.

I've included an annotated hex-dump for each message here, but the dbus
test suite doesn't currently know how to convert hex to binary, so I've
also committed the corresponding binary. See the comment at the top of
each hex-dump for how to create the binary version (which requires the
xxd tool shipped with vim).

It would be nice for the dbus test suite to be able to convert the
annotated hex-dump to binary, either at build-time with a Python script
or at runtime by loading the text file and decoding the hex, but I don't
want to block on that for dbus/dbus#413 and dbus/dbus#418.

Reproduces: https://gitlab.freedesktop.org/dbus/dbus/-/issues/413
Reproduces: https://gitlab.freedesktop.org/dbus/dbus/-/issues/418
Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-10-05 10:24:22 +01:00

47 lines
2.2 KiB
Text

# Copyright 2022 Evgeny Vereshchagin
# Copyright 2022 Collabora Ltd.
# SPDX-License-Identifier: MIT
#
# This is an annotated hex-dump of a message originally generated by a
# fuzzer.
#
# To output as binary:
# sed -e 's/#.*//' test/data/invalid-messages/issue418.message-raw.hex |
# xxd -p -r - test/data/invalid-messages/issue418.message-raw
#
# The rather non-specific name is because this message is invalid in at
# least three separate ways:
#
# - parentheses and curly brackets in the signature are not nested correctly
# - the signature of one header field is of zero length
# - the signature of another header field is longer than the message
#
# mis-nested-sig.message-raw.hex,
# truncated-variant-sig.message-raw.hex,
# zero-length-variant-sig.message-raw.hex are simplified versions of this
# message with only one of those reasons to be invalid.
# Offset % 0x10:
# 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f
6c # little-endian
8f # an undefined message type
28 # flags
01 # major protocol version 1
0000 0000 # message body is 0 bytes
7b22 0008 # serial number 0x0800227b
1800 0000 # header is an array of 0x18 bytes of struct (yv)
fd # header field code 0xfd (an undefined header)
15 # signature is 0x15 = 21 bytes
2874 617b 7961 7b64 617b 7961 7b79 # "(ta{ya{da{ya{y"...
6171 7d7d 7d29 7d00 # "aq}}})}" \0
0000 0000 0000 0000 # padding to 8-byte boundary
0c # header field code 0x0c
00 # signature is zero-length (invalid!)
00 # "" \0
00 0000 0000 0000 0000 0000 0000 # padding
fe # header field code 0xfe
ff # signature is 0xff = 255 bytes
0000 # truncated (invalid!)
#sha1 e5d2bc02229d93ffdd7f589b7123adb3902ee981