gsasl-commit
[Top][All Lists]
Advanced

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

CVS gsasl/lib/digest-md5


From: gsasl-commit
Subject: CVS gsasl/lib/digest-md5
Date: Fri, 24 Sep 2004 02:24:56 +0200

Update of /home/cvs/gsasl/lib/digest-md5
In directory dopio:/tmp/cvs-serv7691/lib/digest-md5

Modified Files:
        client.c digest-md5.h server.c 
Log Message:
Use new allocating step API in DIGEST-MD5.


--- /home/cvs/gsasl/lib/digest-md5/client.c     2004/09/23 23:50:01     1.4
+++ /home/cvs/gsasl/lib/digest-md5/client.c     2004/09/24 00:24:56     1.5
@@ -84,7 +84,7 @@
                               void *mech_data,
                               const char *input,
                               size_t input_len,
-                              char *output, size_t * output_len)
+                              char **output2, size_t * output2_len)
 {
   _Gsasl_digest_md5_client_state *state = mech_data;
   Gsasl_client_callback_authorization_id cb_authorization_id;
@@ -98,6 +98,13 @@
   Gsasl_ctx *ctx;
   int outlen;
   int res, i;
+  /* FIXME: Remove fixed size buffer. */
+  char output[BUFSIZ];
+  size_t outputlen = BUFSIZ - 1;
+  size_t *output_len = &outputlen;
+
+  *output2 = NULL;
+  *output2_len = 0;
 
   ctx = gsasl_client_ctx_get (sctx);
   if (ctx == NULL)
@@ -778,6 +785,15 @@
     fprintf (stderr, "%s\n", output);
 #endif
 
+  if (res == GSASL_OK || res == GSASL_NEEDS_MORE)
+    {
+      *output2_len = *output_len;
+      *output2 = malloc (*output2_len);
+      if (!*output2)
+       return GSASL_MALLOC_ERROR;
+      memcpy (*output2, output, *output2_len);
+    }
+
   return res;
 }
 
--- /home/cvs/gsasl/lib/digest-md5/digest-md5.h 2004/09/23 00:20:55     1.4
+++ /home/cvs/gsasl/lib/digest-md5/digest-md5.h 2004/09/24 00:24:56     1.5
@@ -31,9 +31,8 @@
                                           void **mech_data);
 extern int _gsasl_digest_md5_client_step (Gsasl_session_ctx * sctx,
                                          void *mech_data,
-                                         const char *input,
-                                         size_t input_len,
-                                         char *output, size_t * output_len);
+                                         const char *input, size_t input_len,
+                                         char **output, size_t * output_len);
 extern int _gsasl_digest_md5_client_finish (Gsasl_session_ctx * sctx,
                                            void *mech_data);
 extern int _gsasl_digest_md5_client_encode (Gsasl_session_ctx * sctx,
@@ -53,9 +52,8 @@
                                           void **mech_data);
 extern int _gsasl_digest_md5_server_step (Gsasl_session_ctx * sctx,
                                          void *mech_data,
-                                         const char *input,
-                                         size_t input_len,
-                                         char *output, size_t * output_len);
+                                         const char *input, size_t input_len,
+                                         char **output, size_t * output_len);
 extern int _gsasl_digest_md5_server_finish (Gsasl_session_ctx * sctx,
                                            void *mech_data);
 extern int _gsasl_digest_md5_server_encode (Gsasl_session_ctx * sctx,
--- /home/cvs/gsasl/lib/digest-md5/server.c     2004/09/23 23:50:01     1.5
+++ /home/cvs/gsasl/lib/digest-md5/server.c     2004/09/24 00:24:56     1.6
@@ -81,7 +81,7 @@
                               void *mech_data,
                               const char *input,
                               size_t input_len,
-                              char *output, size_t * output_len)
+                              char **output2, size_t * output2_len)
 {
   _Gsasl_digest_md5_server_state *state = mech_data;
   Gsasl_server_callback_realm cb_realm;
@@ -94,6 +94,13 @@
   int res;
   int outlen;
   unsigned long maxbuf = MAXBUF_DEFAULT;
+  /* FIXME: Remove fixed size buffer. */
+  char output[BUFSIZ];
+  size_t outputlen = BUFSIZ - 1;
+  size_t *output_len = &outputlen;
+
+  *output2 = NULL;
+  *output2_len = 0;
 
   ctx = gsasl_server_ctx_get (sctx);
   if (ctx == NULL)
@@ -727,6 +734,15 @@
     fprintf (stderr, "%s\n", output);
 #endif
 
+  if (res == GSASL_OK || res == GSASL_NEEDS_MORE)
+    {
+      *output2_len = *output_len;
+      *output2 = malloc (*output2_len);
+      if (!*output2)
+       return GSASL_MALLOC_ERROR;
+      memcpy (*output2, output, *output2_len);
+    }
+
   return res;
 }
 





reply via email to

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