gsasl-commit
[Top][All Lists]
Advanced

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

CVS gsasl/lib/gssapi


From: gsasl-commit
Subject: CVS gsasl/lib/gssapi
Date: Fri, 24 Sep 2004 02:30:53 +0200

Update of /home/cvs/gsasl/lib/gssapi
In directory dopio:/tmp/cvs-serv7740/lib/gssapi

Modified Files:
        server.c x-gssapi.h 
Log Message:
Make GSSAPI server use allocating interface.


--- /home/cvs/gsasl/lib/gssapi/server.c 2004/09/18 16:56:01     1.1
+++ /home/cvs/gsasl/lib/gssapi/server.c 2004/09/24 00:30:53     1.2
@@ -114,9 +114,8 @@
 int
 _gsasl_gssapi_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 **output2, size_t * output2_len)
 {
   _Gsasl_gssapi_server_state *state = mech_data;
   Gsasl_server_callback_gssapi cb_gssapi;
@@ -127,6 +126,13 @@
   Gsasl_ctx *ctx;
   char *username;
   int res;
+  /* 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)
@@ -274,6 +280,15 @@
       break;
     }
 
+  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/gssapi/x-gssapi.h       2004/09/23 00:20:56     1.7
+++ /home/cvs/gsasl/lib/gssapi/x-gssapi.h       2004/09/24 00:30:53     1.8
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef GSSAPI_H
-#define GSSAPI_H
+#ifndef X_GSSAPI_H
+#define X_GSSAPI_H
 
 #include "internal.h"
 
@@ -48,10 +48,9 @@
                                       void **mech_data);
 extern int _gsasl_gssapi_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_gssapi_server_finish (Gsasl_session_ctx * sctx,
                                        void *mech_data);
 
-#endif /* GSSAPI_H */
+#endif /* X_GSSAPI_H */





reply via email to

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