summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-auth.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-02-13 02:33:32 +0000
committerHavoc Pennington <hp@redhat.com>2003-02-13 02:33:32 +0000
commitc9ea8fac502c6109713aa372c4c8cfafd0b86858 (patch)
treebf6440f13fdf3d49bdca498f829cc464f3f8669a /dbus/dbus-auth.c
parent32dc75ee6b1bb06e8cc1b956e7d80b54f24b5df6 (diff)
2003-02-12 Havoc Pennington <hp@pobox.com>
* dbus/dbus-string.c (_dbus_string_pop_line): fix to also strip \r off of popped lines * dbus/dbus-auth.c (_dbus_auth_test): write code to run auth scripts * dbus/dbus-auth-script.c (_dbus_auth_script_run): when doing a SEND, append \r\n
Diffstat (limited to 'dbus/dbus-auth.c')
-rw-r--r--dbus/dbus-auth.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c
index 697723b1..071e3416 100644
--- a/dbus/dbus-auth.c
+++ b/dbus/dbus-auth.c
@@ -1061,6 +1061,8 @@ process_command (DBusAuth *auth)
int i, j;
dbus_bool_t retval;
+ _dbus_verbose (" trying process_command()\n");
+
retval = FALSE;
eol = 0;
@@ -1596,12 +1598,141 @@ _dbus_auth_get_identity (DBusAuth *auth,
#ifdef DBUS_BUILD_TESTS
#include "dbus-test.h"
+#include "dbus-auth-script.h"
#include <stdio.h>
+static dbus_bool_t
+process_test_subdir (const DBusString *test_base_dir,
+ const char *subdir)
+{
+ DBusString test_directory;
+ DBusString filename;
+ DBusDirIter *dir;
+ dbus_bool_t retval;
+ DBusResultCode result;
+
+ retval = FALSE;
+ dir = NULL;
+
+ if (!_dbus_string_init (&test_directory, _DBUS_INT_MAX))
+ _dbus_assert_not_reached ("didn't allocate test_directory\n");
+
+ _dbus_string_init_const (&filename, subdir);
+
+ if (!_dbus_string_copy (test_base_dir, 0,
+ &test_directory, 0))
+ _dbus_assert_not_reached ("couldn't copy test_base_dir to test_directory");
+
+ if (!_dbus_concat_dir_and_file (&test_directory, &filename))
+ _dbus_assert_not_reached ("couldn't allocate full path");
+
+ _dbus_string_free (&filename);
+ if (!_dbus_string_init (&filename, _DBUS_INT_MAX))
+ _dbus_assert_not_reached ("didn't allocate filename string\n");
+
+ dir = _dbus_directory_open (&test_directory, &result);
+ if (dir == NULL)
+ {
+ const char *s;
+ _dbus_string_get_const_data (&test_directory, &s);
+ _dbus_warn ("Could not open %s: %s\n", s,
+ dbus_result_to_string (result));
+ goto failed;
+ }
+
+ printf ("Testing:\n");
+
+ result = DBUS_RESULT_SUCCESS;
+ next:
+ while (_dbus_directory_get_next_file (dir, &filename, &result))
+ {
+ DBusString full_path;
+
+ if (!_dbus_string_init (&full_path, _DBUS_INT_MAX))
+ _dbus_assert_not_reached ("couldn't init string");
+
+ if (!_dbus_string_copy (&test_directory, 0, &full_path, 0))
+ _dbus_assert_not_reached ("couldn't copy dir to full_path");
+
+ if (!_dbus_concat_dir_and_file (&full_path, &filename))
+ _dbus_assert_not_reached ("couldn't concat file to dir");
+
+ if (!_dbus_string_ends_with_c_str (&filename, ".auth-script"))
+ {
+ const char *filename_c;
+ _dbus_string_get_const_data (&filename, &filename_c);
+ _dbus_verbose ("Skipping non-.auth-script file %s\n",
+ filename_c);
+ goto next;
+ }
+
+ {
+ const char *s;
+ _dbus_string_get_const_data (&filename, &s);
+ printf (" %s\n", s);
+ }
+
+ if (!_dbus_auth_script_run (&full_path))
+ {
+ _dbus_string_free (&full_path);
+ goto failed;
+ }
+ else
+ _dbus_string_free (&full_path);
+ }
+
+ if (result != DBUS_RESULT_SUCCESS)
+ {
+ const char *s;
+ _dbus_string_get_const_data (&test_directory, &s);
+ _dbus_warn ("Could not get next file in %s: %s\n",
+ s, dbus_result_to_string (result));
+ goto failed;
+ }
+
+ retval = TRUE;
+
+ failed:
+
+ if (dir)
+ _dbus_directory_close (dir);
+ _dbus_string_free (&test_directory);
+ _dbus_string_free (&filename);
+
+ return retval;
+}
+
+static dbus_bool_t
+process_test_dirs (const char *test_data_dir)
+{
+ DBusString test_directory;
+ dbus_bool_t retval;
+
+ retval = FALSE;
+
+ _dbus_string_init_const (&test_directory, test_data_dir);
+
+ if (!process_test_subdir (&test_directory, "auth"))
+ goto failed;
+
+ retval = TRUE;
+
+ failed:
+
+ _dbus_string_free (&test_directory);
+
+ return retval;
+}
+
dbus_bool_t
_dbus_auth_test (const char *test_data_dir)
{
+ if (test_data_dir == NULL)
+ return TRUE;
+
+ if (!process_test_dirs (test_data_dir))
+ return FALSE;
return TRUE;
}