summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2022-09-30 15:08:20 +0100
committerSimon McVittie <smcv@collabora.com>2022-10-11 14:35:22 +0100
commit7a0f050a54d6017302e5aa246e3eda909c028004 (patch)
tree3100365a319bb54398ae2f89f032bfdab1384190
parent37a65e0a36355d9a079ed086424a6bc11abb5d7d (diff)
downloaddbus-7a0f050a54d6017302e5aa246e3eda909c028004.tar.gz
dbus-message: Report OOM as OOM, not InvalidArgs
Resolves: https://gitlab.freedesktop.org/dbus/dbus/-/issues/420 Signed-off-by: Simon McVittie <smcv@collabora.com> (cherry picked from commit 3c0e63c10a63dc856e4c698c9e363f0ad7a223a9)
-rw-r--r--dbus/dbus-message.c3
-rw-r--r--test/message.c9
2 files changed, 3 insertions, 9 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c
index 45b1adfd..9bc13cf9 100644
--- a/dbus/dbus-message.c
+++ b/dbus/dbus-message.c
@@ -5185,6 +5185,9 @@ dbus_message_demarshal (const char *str,
return msg;
fail_corrupt:
+ if (loader->corruption_reason == DBUS_VALIDITY_UNKNOWN_OOM_ERROR)
+ goto fail_oom;
+
dbus_set_error (error, DBUS_ERROR_INVALID_ARGS, "Message is corrupted (%s)",
_dbus_validity_to_error_message (loader->corruption_reason));
_dbus_message_loader_unref (loader);
diff --git a/test/message.c b/test/message.c
index 60ef113d..d2c9db2b 100644
--- a/test/message.c
+++ b/test/message.c
@@ -291,15 +291,6 @@ test_valid_message_blobs (void *message_name,
goto out;
}
- /* TODO: Validity checking sometimes returns InvalidArgs for OOM */
- if (dbus_error_has_name (&e, DBUS_ERROR_INVALID_ARGS) &&
- !have_memory &&
- strstr (e.message, "Out of memory") != NULL)
- {
- g_test_message ("Out of memory (not a problem)");
- goto out;
- }
-
g_test_message ("Parsing %s reported unexpected error %s: %s",
path, e.name, e.message);
g_test_fail ();