gsasl-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gsasl branch, master, updated. gsasl-1-4-1-53-gf9894d7


From: Simon Josefsson
Subject: [SCM] GNU gsasl branch, master, updated. gsasl-1-4-1-53-gf9894d7
Date: Thu, 18 Mar 2010 09:56:53 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gsasl".

http://git.savannah.gnu.org/cgit/gsasl.git/commit/?id=f9894d7e290b5dfbc8d6e4cce547ac4b86a2deac

The branch, master has been updated
       via  f9894d7e290b5dfbc8d6e4cce547ac4b86a2deac (commit)
       via  47ddc5e81828409159005132133de7d3367611c7 (commit)
       via  d2bb55317f8dc3b92d2ab5422074347eed44021a (commit)
       via  e326fe155218ed34a1db01064c7ff9eab2ed6016 (commit)
       via  981875ef81fd49382d2656bf5f23dcbeaf9858a5 (commit)
      from  9dd66728280d38a478c4d2c5e015b435b9297145 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f9894d7e290b5dfbc8d6e4cce547ac4b86a2deac
Author: Simon Josefsson <address@hidden>
Date:   Thu Mar 18 10:56:41 2010 +0100

    Also need gperf.

commit 47ddc5e81828409159005132133de7d3367611c7
Author: Simon Josefsson <address@hidden>
Date:   Wed Mar 17 15:32:11 2010 +0100

    Fix self test to handle modified DIGEST-MD5 behaviour.

commit d2bb55317f8dc3b92d2ab5422074347eed44021a
Author: Simon Josefsson <address@hidden>
Date:   Wed Mar 17 14:58:56 2010 +0100

    Also test server goes first.

commit e326fe155218ed34a1db01064c7ff9eab2ed6016
Author: Simon Josefsson <address@hidden>
Date:   Wed Mar 17 14:50:25 2010 +0100

    Also test client-goes-first.

commit 981875ef81fd49382d2656bf5f23dcbeaf9858a5
Author: Simon Josefsson <address@hidden>
Date:   Wed Mar 17 14:49:34 2010 +0100

    DIGEST-MD5: The server code now returns GSASL_OK after the final token.

-----------------------------------------------------------------------

Summary of changes:
 README-alpha            |    4 +-
 lib/NEWS                |    2 +
 lib/digest-md5/server.c |    8 +--
 tests/digest-md5.c      |  157 ++++++++++++++++++++++++++++++++++++++++------
 tests/old-digest-md5.c  |   22 +------
 tests/scram.c           |   31 ++++++++-
 6 files changed, 171 insertions(+), 53 deletions(-)

diff --git a/README-alpha b/README-alpha
index d2aac81..ab2f717 100644
--- a/README-alpha
+++ b/README-alpha
@@ -1,5 +1,5 @@
 GNU SASL README-alpha -- Information for developers.            -*- outline -*-
-Copyright (C) 2009 Simon Josefsson
+Copyright (C) 2009, 2010 Simon Josefsson
 See the end for copying conditions.
 
 This file contains instructions for developers and advanced users that
@@ -34,7 +34,7 @@ gNewSense/Debian/Ubuntu:
 sudo apt-get install git-core autoconf automake libtool gettext cvs
 sudo apt-get install texinfo texlive texlive-generic-recommended 
texlive-extra-utils
 sudo apt-get install help2man gtk-doc-tools valgrind
-sudo apt-get install dia libgnutls-dev gengetopt
+sudo apt-get install dia libgnutls-dev gengetopt gperf
 
 To download the version controlled sources:
 
diff --git a/lib/NEWS b/lib/NEWS
index 34b6fad..b9cfbcb 100644
--- a/lib/NEWS
+++ b/lib/NEWS
@@ -15,6 +15,8 @@ they are compatible in modern releases.
 ** SCRAM: Encode and decode username/authzid properly.
 Before any username/authzid that contained '=' or ',' would not work.
 
+** DIGEST-MD5: The server code now returns GSASL_OK after the final token.
+
 ** API and ABI modifications.
 No changes since last version.
 
diff --git a/lib/digest-md5/server.c b/lib/digest-md5/server.c
index 901f32f..ea5ce38 100644
--- a/lib/digest-md5/server.c
+++ b/lib/digest-md5/server.c
@@ -1,5 +1,5 @@
 /* server.c --- DIGEST-MD5 mechanism from RFC 2831, server side.
- * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon 
Josefsson
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010  Simon 
Josefsson
  *
  * This file is part of GNU SASL Library.
  *
@@ -321,12 +321,6 @@ _gsasl_digest_md5_server_step (Gsasl_session * sctx,
       *output_len = strlen (*output);
 
       state->step++;
-      res = GSASL_NEEDS_MORE;
-      break;
-
-    case 2:
-      *output_len = 0;
-      state->step++;
       res = GSASL_OK;
       break;
 
diff --git a/tests/digest-md5.c b/tests/digest-md5.c
index 7f59c34..4616d47 100644
--- a/tests/digest-md5.c
+++ b/tests/digest-md5.c
@@ -202,9 +202,9 @@ doit (void)
          return;
        }
 
-      /* Server begins... */
+      /* Client sends empty token... */
 
-      res = gsasl_step (server, NULL, 0, &s1, &s1len);
+      res = gsasl_step (client, NULL, 0, &s1, &s1len);
       if (res != GSASL_NEEDS_MORE)
        {
          fail ("gsasl_step(1) failed (%d):\n%s\n", res,
@@ -213,11 +213,11 @@ doit (void)
        }
 
       if (debug)
-       printf ("S: %.*s\n", s1len, s1);
+       printf ("C: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
 
-      /* Client respond... */
+      /* Server starts... */
 
-      res = gsasl_step (client, s1, s1len, &s2, &s2len);
+      res = gsasl_step (server, s1, s1len, &s2, &s2len);
       gsasl_free (s1);
       if (res != GSASL_NEEDS_MORE)
        {
@@ -227,11 +227,11 @@ doit (void)
        }
 
       if (debug)
-       printf ("C: %.*s\n", s2len, s2);
+       printf ("S: %.*s [%c]\n", s2len, s2, res == GSASL_OK ? 'O' : 'N');
 
-      /* Server finishes... */
+      /* Client responds... */
 
-      res = gsasl_step (server, s2, s2len, &s1, &s1len);
+      res = gsasl_step (client, s2, s2len, &s1, &s1len);
       gsasl_free (s2);
       if (res != GSASL_NEEDS_MORE)
        {
@@ -241,11 +241,11 @@ doit (void)
        }
 
       if (debug)
-       printf ("S: %.*s\n", s1len, s1);
+       printf ("C: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
 
-      /* Client finishes... */
+      /* Server finishes... */
 
-      res = gsasl_step (client, s1, s1len, &s2, &s2len);
+      res = gsasl_step (server, s1, s1len, &s2, &s2len);
       gsasl_free (s1);
       if (res != GSASL_OK)
        {
@@ -255,18 +255,11 @@ doit (void)
        }
 
       if (debug)
-       {
-         /* Solaris x86 crashes here if s2 is NULL, even when s2len
-            is 0. */
-         if (s2len)
-           printf ("C: %.*s\n", s2len, s2);
-         else
-           printf ("C: \n");
-       }
+       printf ("S: %.*s [%c]\n", s2len, s2, res == GSASL_OK ? 'O' : 'N');
 
-      /* Server is done. */
+      /* Client finishes. */
 
-      res = gsasl_step (server, s2, s2len, &s1, &s1len);
+      res = gsasl_step (client, s2, s2len, &s1, &s1len);
       gsasl_free (s2);
       if (res != GSASL_OK)
        {
@@ -282,7 +275,129 @@ doit (void)
          return;
        }
 
+      if (debug)
+       printf ("C: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
+
+      /* Server is done. */
+
+      res = gsasl_step (server, s1, s1len, &s2, &s2len);
+      if (res != GSASL_MECHANISM_CALLED_TOO_MANY_TIMES)
+       {
+         fail ("gsasl_step(6) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      /* Client is done. */
+
+      res = gsasl_step (client, s1, s1len, &s2, &s2len);
+      if (res != GSASL_MECHANISM_CALLED_TOO_MANY_TIMES)
+       {
+         fail ("gsasl_step(7) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      gsasl_free (s1);
+
+      if (debug)
+       printf ("\n");
+
+      gsasl_finish (client);
+      gsasl_finish (server);
+    }
+
+  for (i = 0; i < 5; i++)
+    {
+      res = gsasl_server_start (ctx, "DIGEST-MD5", &server);
+      if (res != GSASL_OK)
+       {
+         fail ("gsasl_init() failed (%d):\n%s\n", res, gsasl_strerror (res));
+         return;
+       }
+      res = gsasl_client_start (ctx, "DIGEST-MD5", &client);
+      if (res != GSASL_OK)
+       {
+         fail ("gsasl_init() failed (%d):\n%s\n", res, gsasl_strerror (res));
+         return;
+       }
+
+      /* Server begins... */
+
+      res = gsasl_step (server, NULL, 0, &s1, &s1len);
+      if (res != GSASL_NEEDS_MORE)
+       {
+         fail ("gsasl_step(8) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      if (debug)
+       printf ("S: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
+
+      /* Client respond... */
+
+      res = gsasl_step (client, s1, s1len, &s2, &s2len);
+      gsasl_free (s1);
+      if (res != GSASL_NEEDS_MORE)
+       {
+         fail ("gsasl_step(9) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      if (debug)
+       printf ("C: %.*s [%c]\n", s2len, s2, res == GSASL_OK ? 'O' : 'N');
+
+      /* Server finishes... */
+
+      res = gsasl_step (server, s2, s2len, &s1, &s1len);
+      gsasl_free (s2);
+      if (res != GSASL_OK)
+       {
+         fail ("gsasl_step(10) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      if (debug)
+       printf ("S: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
+
+      /* Client finishes... */
+
+      res = gsasl_step (client, s1, s1len, &s2, &s2len);
       gsasl_free (s1);
+      if (res != GSASL_OK)
+       {
+         fail ("gsasl_step(11) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      if (debug)
+       printf ("C: %.*s [%c]\n", s2len, s2, res == GSASL_OK ? 'O' : 'N');
+
+      /* Server is done. */
+
+      res = gsasl_step (server, s2, s2len, &s1, &s1len);
+      if (res != GSASL_MECHANISM_CALLED_TOO_MANY_TIMES)
+       {
+         fail ("gsasl_step(12) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      /* Client is done. */
+
+      res = gsasl_step (client, s2, s2len, &s1, &s1len);
+      if (res != GSASL_MECHANISM_CALLED_TOO_MANY_TIMES)
+       {
+         fail ("gsasl_step(13) failed (%d):\n%s\n", res,
+               gsasl_strerror (res));
+         return;
+       }
+
+      gsasl_free (s2);
 
       /* Encode data in client. */
 
diff --git a/tests/old-digest-md5.c b/tests/old-digest-md5.c
index d70359a..092eb6f 100644
--- a/tests/old-digest-md5.c
+++ b/tests/old-digest-md5.c
@@ -1,5 +1,5 @@
 /* digest-md5.c --- Test the DIGEST-MD5 mechanism.
- * Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009  Simon Josefsson
+ * Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009, 2010  Simon Josefsson
  *
  * This file is part of GNU SASL.
  *
@@ -200,7 +200,7 @@ doit (void)
 
       res = gsasl_step (server, s2, s2len, &s1, &s1len);
       free (s2);
-      if (res != GSASL_NEEDS_MORE)
+      if (res != GSASL_OK)
        {
          fail ("gsasl_step(3) failed (%d):\n%s\n", res,
                gsasl_strerror (res));
@@ -231,25 +231,7 @@ doit (void)
            printf ("C: \n");
        }
 
-      /* Server is done. */
-
-      res = gsasl_step (server, s2, s2len, &s1, &s1len);
       free (s2);
-      if (res != GSASL_OK)
-       {
-         fail ("gsasl_step(5) failed (%d):\n%s\n", res,
-               gsasl_strerror (res));
-         return;
-       }
-
-      if (s1len != 0)
-       {
-         fail ("gsasl_step() failed, additional length=%d:\n", s1len);
-         fail ("%s\n", s1);
-         return;
-       }
-
-      free (s1);
 
       if (debug)
        printf ("\n");
diff --git a/tests/scram.c b/tests/scram.c
index b4f4ae6..0a826b6 100644
--- a/tests/scram.c
+++ b/tests/scram.c
@@ -26,6 +26,7 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdbool.h>
 
 #include "utils.h"
 
@@ -142,6 +143,8 @@ doit (void)
 
   for (i = 0; i <= 15; i++)
     {
+      bool server_first = (i % 2) == 0;
+
       if (debug)
        printf ("Iteration %d ...\n", i);
 
@@ -158,9 +161,31 @@ doit (void)
          return;
        }
 
+      if (server_first)
+       {
+         res = gsasl_step (server, NULL, 0, &s1, &s1len);
+         if (res != GSASL_NEEDS_MORE)
+           {
+             fail ("gsasl_step[%d](0) failed (%d):\n%s\n", i, res,
+                   gsasl_strerror (res));
+             return;
+           }
+
+         if (s1len != 0)
+           fail ("dummy initial server step produced output?!\n");
+
+         if (debug)
+           printf ("S: %.*s [%c]\n", s1len, s1, res == GSASL_OK ? 'O' : 'N');
+       }
+      else
+       {
+         s1 = NULL;
+         s1len = 0;
+       }
+
       /* Client first... */
 
-      res = gsasl_step (client, NULL, 0, &s1, &s1len);
+      res = gsasl_step (client, s1, s1len, &s1, &s1len);
       if (res != GSASL_NEEDS_MORE)
        {
          fail ("gsasl_step[%d](1) failed (%d):\n%s\n", i, res,
@@ -224,8 +249,8 @@ doit (void)
          return;
        }
 
-      if (debug)
-       printf ("C: %.*s\n", s1len, s1);
+      if (s1len != 0)
+       fail ("dummy final client step produced output?!\n");
 
       {
        const char *p = gsasl_property_fast (server, GSASL_AUTHID);


hooks/post-receive
-- 
GNU gsasl




reply via email to

[Prev in Thread] Current Thread [Next in Thread]