libvirt/scripts
Michal Privoznik 94ded36b3f rpcgen: tests: Run cleanly on platforms where char is unsigned
There are some platforms where 'char' is unsigned, by default
(RPi, s390x to name a few). And because of how test_demo is
written we are experiencing some test cases failing there. For
instance: /xdr/struct-scalar is failing. This is because in the
test (test_struct_scalar()), we have a struct with two chars. One
is initialized to 0xca, the other 0xfe (note that both have the
MSB set). The XDR encoder (xdr_TestStructScalar()) then calls
xdr_char() on both of them. But XDR itself has no notion of
char type, so under the hood, it expands it to int [1] and calls
xdr_int(). And this is where the problem lies. On platforms where
char is signed, the integer expansion results in 0xffffffca, but
on platforms where char is unsigned it results in 0x000000ca. Two
distinct results.

The test then goes and compares the encoded buffer with an
expected one (memcmp(), read from the disk earlier).

This poses no problem for real life use, because when decoding
those chars back, the padding is thrown away.

To avoid tickling this issue, use values that don't have the MSB
set.

1: https://git.linux-nfs.org/?p=steved/libtirpc.git;a=blob;f=src/xdr.c;h=28d1382cc4853ecf1238d792af5016160435d1e0;hb=HEAD#l487

Fixes: 40cbaa8fbe rpcgen: add test case for XDR serialization
Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
2023-11-29 17:16:45 +01:00
..
rpcgen rpcgen: tests: Run cleanly on platforms where char is unsigned 2023-11-29 17:16:45 +01:00
apibuild.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
augeas-gentest.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
check-aclperms.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
check-aclrules.py scripts/check-aclrules.py: check ACL for domain_driver.c ACL callers 2021-02-17 15:56:53 -03:00
check-driverimpls.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
check-drivername.py libvirt: add stateShutdownPrepare/stateShutdownWait to drivers 2020-09-07 09:33:58 +03:00
check-file-access.py meson: tests: add file access test setup 2020-08-03 09:27:06 +02:00
check-html-references.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
check-pot.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
check-remote-protocol.py scripts: ignore whitespace in pdwtags output 2020-12-02 10:30:01 +00:00
check-symfile.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
check-symsorting.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
cocci-macro-file.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
dtrace2systemtap.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
esx_vi_generator.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
genaclperms.py docs: ACL: Mention the ACL object name along with the corresponding libvirt object name 2023-02-20 18:26:47 +01:00
genpolkit.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
gensystemtap.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
group-qemu-caps.py scripts: group-qemu-caps: Add capability name as comment to capability string 2021-08-18 09:37:09 +02:00
header-ifdef.py build: only support python3 binary 2019-12-04 13:13:01 +00:00
hvsupport.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
hyperv_wmi_generator.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
merge-systemd-units.py systemd: Allow comments at the top of units 2023-10-25 12:19:32 +02:00
meson-dist.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
meson-gen-authors.py AUTHORS: Convert to reStructuredText 2020-09-02 13:20:03 +02:00
meson-gen-def.py meson: scripts: introduce meson-gen-def.py script 2020-08-03 09:27:04 +02:00
meson-gen-sym.py meson: scripts: introduce meson-gen-sym.py script 2020-08-03 09:27:04 +02:00
meson-install-dirs.py meson: src: install empty directories 2020-08-03 09:27:05 +02:00
meson-install-symlink.py scripts: Fix meson-install-symlink.py overwriting existing links 2020-08-05 13:11:16 +02:00
meson-install-web.py scripts: Add $DESTDIR support to meson-install-web.py 2022-08-11 14:01:55 +02:00
meson-python.sh meson: add runutf8 env vars and meson-python.sh script 2020-08-03 09:27:00 +02:00
meson-timestamp.py scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
meson.build rpcgen: add an XDR protocol lexer 2023-11-03 14:06:35 -04:00
mock-noinline.py lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
prohibit-duplicate-header.py build: only support python3 binary 2019-12-04 13:13:01 +00:00