[Spice-devel] [PATCH spice-server v3 07/12] test-sasl: Add tests for different mechanism names

Christophe Fergeau cfergeau at redhat.com
Thu Jan 4 15:55:54 UTC 2018


Ok,
Acked-by: Christophe Fergeau <cfergeau at redhat.com>

On Fri, Dec 22, 2017 at 10:07:08AM +0000, Frediano Ziglio wrote:
> Try different connections with different tricky names.
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/tests/test-sasl.c | 60 ++++++++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 55 insertions(+), 5 deletions(-)
> 
> diff --git a/server/tests/test-sasl.c b/server/tests/test-sasl.c
> index 3973ebdcd..df0561b3a 100644
> --- a/server/tests/test-sasl.c
> +++ b/server/tests/test-sasl.c
> @@ -23,6 +23,7 @@
>  #if HAVE_SASL
>  #include <unistd.h>
>  #include <errno.h>
> +#include <string.h>
>  #include <stdbool.h>
>  #include <spice.h>
>  #include <sasl/sasl.h>
> @@ -339,9 +340,40 @@ idle_add(GSourceFunc func, void *arg)
>      g_source_unref(source);
>  }
>  
> +typedef struct {
> +    const char *mechname;
> +    int mechlen;
> +    bool success;
> +} TestData;
> +
> +static char long_mechname[128];
> +static TestData tests_data[] = {
> +    // these should just succeed
> +#define TEST_SUCCESS(mech) \
> +    { mech, -1, true },
> +    TEST_SUCCESS("ONE")
> +    TEST_SUCCESS("TWO")
> +    TEST_SUCCESS("THREE")
> +
> +    // these test bad mech names
> +#define TEST_BAD_NAME(mech, len) \
> +    { mech, len, false },
> +    TEST_BAD_NAME("ON", -1)
> +    TEST_BAD_NAME("NE", -1)
> +    TEST_BAD_NAME("THRE", -1)
> +    TEST_BAD_NAME("HREE", -1)
> +    TEST_BAD_NAME("ON\x00", 3)
> +    TEST_BAD_NAME("O\x00\x00", 3)
> +    TEST_BAD_NAME("", -1)
> +    TEST_BAD_NAME(long_mechname, 101)
> +    TEST_BAD_NAME("ONE,TWO", -1)
> +};
> +
>  static void *
>  client_emulator(void *arg)
>  {
> +    const TestData *data = &tests_data[test_num];
> +
>      int sock = GPOINTER_TO_INT(arg);
>  
>      // send initial message
> @@ -374,8 +406,8 @@ client_emulator(void *arg)
>      read_all(sock, buf, mechlen);
>  
>      // mech name
> -    write_u32(sock, 3);
> -    write_all(sock, "ONE", 3);
> +    write_u32(sock, data->mechlen);
> +    write_all(sock, data->mechname, data->mechlen);
>  
>      // first challenge
>      write_u32(sock, 5);
> @@ -395,16 +427,32 @@ idle_next_test(void *arg)
>  {
>      // end previous test
>      if (test_num >= 0) {
> -        g_assert(encode_called);
> +        const TestData *data = &tests_data[test_num];
> +        if (data->success) {
> +            g_assert(encode_called);
> +        } else {
> +            g_assert(mechlist_called);
> +            g_assert(!encode_called);
> +        }
>          reset_test();
> -        basic_event_loop_quit();
> -        return FALSE;
>      }
>  
>      // start next test
>      ++test_num;
>      alarm(4);
>  
> +    if (test_num >= G_N_ELEMENTS(tests_data)) {
> +        basic_event_loop_quit();
> +        return FALSE;
> +    }
> +
> +    TestData *data = &tests_data[test_num];
> +    if (data->mechlen < 0) {
> +        data->mechlen = strlen(data->mechname);
> +    }
> +    int len = data->mechlen;
> +    printf("\nRunning test %d ('%*.*s' %d)\n", test_num, len, len, data->mechname, len);
> +
>      int sv[2];
>      g_assert_cmpint(socketpair(AF_LOCAL, SOCK_STREAM, 0, sv), ==, 0);
>  
> @@ -422,6 +470,8 @@ sasl_mechs(void)
>  {
>      start_test();
>  
> +    memset(long_mechname, 'X', sizeof(long_mechname));
> +
>      idle_add(idle_next_test, NULL);
>      alarm(4);
>      basic_event_loop_mainloop();
> -- 
> 2.14.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180104/c8df4f0d/attachment.sig>


More information about the Spice-devel mailing list