summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2017-01-17 20:41:17 +0000
committerSimon McVittie <smcv@collabora.com>2017-04-07 12:07:01 +0100
commit40560fa0c7ec921c8144296c72a80d20f403b8bf (patch)
tree669ec1db2dc0fac371e3ff494815119b1ec9b6e7
parentec6cf23718db402fd2c48cf1a76749d999af8fd2 (diff)
test, tools: assert impossible values of local enums are not reached
Based on part of a patch from Thomas Zimmermann. Signed-off-by: Simon McVittie <smcv@collabora.com> Reviewed-by: Philip Withnall <withnall@endlessm.com> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=98191
-rw-r--r--dbus/dbus-marshal-recursive-util.c3
-rw-r--r--dbus/dbus-sha.c7
-rw-r--r--test/test-utils-glib.c9
-rw-r--r--tools/dbus-cleanup-sockets.c1
-rw-r--r--tools/dbus-launch.c6
-rw-r--r--tools/dbus-monitor.c10
-rw-r--r--tools/dbus-run-session.c4
7 files changed, 36 insertions, 4 deletions
diff --git a/dbus/dbus-marshal-recursive-util.c b/dbus/dbus-marshal-recursive-util.c
index d43972fd..b30f5883 100644
--- a/dbus/dbus-marshal-recursive-util.c
+++ b/dbus/dbus-marshal-recursive-util.c
@@ -2390,6 +2390,9 @@ string_from_seed (char *buf,
*/
switch (seed % 3)
{
+ default:
+ /* don't alter it */
+ break;
case 1:
len += 2;
break;
diff --git a/dbus/dbus-sha.c b/dbus/dbus-sha.c
index 343b5d49..52c74f54 100644
--- a/dbus/dbus-sha.c
+++ b/dbus/dbus-sha.c
@@ -693,7 +693,9 @@ get_next_expected_result (DBusString *results,
i = 0;
while (i < _dbus_string_get_length (result))
{
- switch (_dbus_string_get_byte (result, i))
+ unsigned char c = _dbus_string_get_byte (result, i);
+
+ switch (c)
{
case 'A':
_dbus_string_set_byte (result, i, 'a');
@@ -718,6 +720,9 @@ get_next_expected_result (DBusString *results,
_dbus_string_delete (result, i, 1);
--i; /* to offset ++i below */
break;
+ default:
+ if ((c < '0' || c > '9') && (c < 'a' || c > 'f'))
+ _dbus_assert_not_reached ("invalid SHA-1 test script");
}
++i;
diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c
index e13d20d3..bb481952 100644
--- a/test/test-utils-glib.c
+++ b/test/test-utils-glib.c
@@ -151,6 +151,8 @@ spawn_dbus_daemon (const gchar *binary,
break;
+ case TEST_USER_ME:
+ /* cannot get here, fall through */
default:
g_assert_not_reached ();
}
@@ -409,10 +411,15 @@ test_connect_to_bus_as_user (TestMainContext *ctx,
case TEST_USER_ME:
return test_connect_to_bus (ctx, address);
- default:
+ case TEST_USER_ROOT:
+ case TEST_USER_MESSAGEBUS:
+ case TEST_USER_OTHER:
g_test_skip ("setresuid() not available, or unsure about "
"credentials-passing semantics on this platform");
return NULL;
+
+ default:
+ g_return_val_if_reached (NULL);
}
#endif
diff --git a/tools/dbus-cleanup-sockets.c b/tools/dbus-cleanup-sockets.c
index 1b6709af..994e57ed 100644
--- a/tools/dbus-cleanup-sockets.c
+++ b/tools/dbus-cleanup-sockets.c
@@ -328,6 +328,7 @@ handle_sockets (SocketEntry **entries,
break;
case SOCKET_UNLINKED:
+ default:
fprintf (stderr, "Bad status from open_socket(), should not happen\n");
exit (1);
break;
diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c
index 65287af6..75f39cf0 100644
--- a/tools/dbus-launch.c
+++ b/tools/dbus-launch.c
@@ -709,6 +709,8 @@ babysit (int exit_with_session,
strerror (errno));
exit (1);
break;
+ default:
+ _dbus_assert_not_reached ("Invalid read result");
}
verbose ("Got PID %ld from daemon\n",
@@ -1328,6 +1330,8 @@ main (int argc, char **argv)
strerror (errno));
exit (1);
break;
+ default:
+ _dbus_assert_not_reached ("Invalid read result");
}
close (bus_address_to_launcher_pipe[READ_END]);
@@ -1347,6 +1351,8 @@ main (int argc, char **argv)
strerror (errno));
exit (1);
break;
+ default:
+ _dbus_assert_not_reached ("Invalid read result");
}
end = NULL;
diff --git a/tools/dbus-monitor.c b/tools/dbus-monitor.c
index aa28447f..4edee29e 100644
--- a/tools/dbus-monitor.c
+++ b/tools/dbus-monitor.c
@@ -21,7 +21,7 @@
#include <config.h>
-#include "dbus/dbus-internals.h" /* just for the macros */
+#include "dbus/dbus-internals.h"
#include <stdio.h>
#include <stdlib.h>
@@ -240,6 +240,10 @@ binary_filter_func (DBusConnection *connection,
}
break;
+ case BINARY_MODE_NOT:
+ _dbus_assert_not_reached ("wrong filter function");
+ break;
+
case BINARY_MODE_RAW:
default:
/* nothing special, just the raw message stream */
@@ -474,8 +478,10 @@ main (int argc, char *argv[])
case DBUS_BUS_SESSION:
where = "session bus";
break;
+ case DBUS_BUS_STARTER:
default:
- where = "";
+ /* We don't set type to anything else */
+ _dbus_assert_not_reached ("impossible bus type");
}
}
fprintf (stderr, "Failed to open connection to %s: %s\n",
diff --git a/tools/dbus-run-session.c b/tools/dbus-run-session.c
index 135f5d21..0adb5ad1 100644
--- a/tools/dbus-run-session.c
+++ b/tools/dbus-run-session.c
@@ -37,6 +37,7 @@
#include <signal.h>
#include "dbus/dbus.h"
+#include "dbus/dbus-internals.h"
#define MAX_ADDR_LEN 512
#define PIPE_READ_END 0
@@ -386,6 +387,9 @@ main (int argc, char **argv)
me, strerror (errno));
return 127;
break;
+
+ default:
+ _dbus_assert_not_reached ("invalid read result");
}
close (bus_address_pipe[PIPE_READ_END]);