gsasl-commit
[Top][All Lists]
Advanced

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

CVS gsasl/lib/src


From: gsasl-commit
Subject: CVS gsasl/lib/src
Date: Thu, 23 Sep 2004 02:20:57 +0200

Update of /home/cvs/gsasl/lib/src
In directory dopio:/tmp/cvs-serv16592/lib/src

Modified Files:
        gsasl-compat.h gsasl.h.in internal.h obsolete.c xcode.c 
Log Message:
(gsasl_encode. gsasl_decode): Allocate OUTPUT buffer.  Change in prototype.
Update types and callers.


--- /home/cvs/gsasl/lib/src/gsasl-compat.h      2004/09/20 23:47:52     1.3
+++ /home/cvs/gsasl/lib/src/gsasl-compat.h      2004/09/23 00:20:57     1.4
@@ -254,11 +254,11 @@
 extern void *gsasl_server_application_data_get (Gsasl_session_ctx * sctx);
 extern int gsasl_randomize (int strong, char *data, size_t datalen);
 extern Gsasl *gsasl_ctx_get (Gsasl_session * sctx);
-extern int gsasl_encode (Gsasl_session * sctx,
-                        const char *input, size_t input_len,
-                        char *output, size_t * output_len);
-extern int gsasl_decode (Gsasl_session * sctx,
-                        const char *input, size_t input_len,
-                        char *output, size_t * output_len);
+extern int gsasl_encode_inline (Gsasl_session * sctx,
+                               const char *input, size_t input_len,
+                               char *output, size_t * output_len);
+extern int gsasl_decode_inline (Gsasl_session * sctx,
+                               const char *input, size_t input_len,
+                               char *output, size_t * output_len);
 
 #endif /* GSASL_COMPAT_H */
--- /home/cvs/gsasl/lib/src/gsasl.h.in  2004/09/21 01:52:49     1.22
+++ /home/cvs/gsasl/lib/src/gsasl.h.in  2004/09/23 00:20:57     1.23
@@ -241,12 +241,12 @@
   extern void gsasl_finish (Gsasl_session * sctx);
 
 /* Session functions: xcode.c */
-  extern int gsasl_encode_inline (Gsasl_session * sctx,
-                                 const char *input, size_t input_len,
-                                 char *output, size_t * output_len);
-  extern int gsasl_decode_inline (Gsasl_session * sctx,
-                                 const char *input, size_t input_len,
-                                 char *output, size_t * output_len);
+  extern int gsasl_encode (Gsasl_session * sctx,
+                          const char *input, size_t input_len,
+                          char **output, size_t * output_len);
+  extern int gsasl_decode (Gsasl_session * sctx,
+                          const char *input, size_t input_len,
+                          char **output, size_t * output_len);
 
 /* Error handling: error.c */
   extern const char *gsasl_strerror (int err);
--- /home/cvs/gsasl/lib/src/internal.h  2004/09/22 23:42:07     1.12
+++ /home/cvs/gsasl/lib/src/internal.h  2004/09/23 00:20:57     1.13
@@ -47,7 +47,7 @@
 typedef int (*_Gsasl_code_function) (Gsasl_session * sctx,
                                     void *mech_data,
                                     const char *input, size_t input_len,
-                                    char *output, size_t * output_len);
+                                    char **output, size_t * output_len);
 
 typedef int (*_Gsasl_step_function_a) (Gsasl_session * sctx, void *mech_data,
                                       const char *input, size_t input_len,
--- /home/cvs/gsasl/lib/src/obsolete.c  2004/09/20 23:47:52     1.8
+++ /home/cvs/gsasl/lib/src/obsolete.c  2004/09/23 00:20:57     1.9
@@ -452,7 +452,7 @@
 }
 
 /**
- * gsasl_encode:
+ * gsasl_encode_inline:
  * @sctx: libgsasl session handle.
  * @input: input byte array.
  * @input_len: size of input byte array.
@@ -469,15 +469,29 @@
  * an error code.
  **/
 int
-gsasl_encode (Gsasl_session * sctx,
-             const char *input, size_t input_len,
-             char *output, size_t * output_len)
+gsasl_encode_inline (Gsasl_session * sctx,
+                    const char *input, size_t input_len,
+                    char *output, size_t * output_len)
 {
-  return gsasl_encode_inline (sctx, input, input_len, output, output_len);
+  char *tmp;
+  size_t tmplen;
+  int res;
+
+  res = gsasl_encode (sctx, input, input_len, &tmp, &tmplen);
+  if (res == GSASL_OK)
+    {
+      if (*output_len < tmplen)
+       return GSASL_TOO_SMALL_BUFFER;
+      *output_len = tmplen;
+      memcpy (output, tmp, tmplen);
+      free (output);
+    }
+
+  return res;
 }
 
 /**
- * gsasl_decode:
+ * gsasl_decode_inline:
  * @sctx: libgsasl session handle.
  * @input: input byte array.
  * @input_len: size of input byte array.
@@ -494,9 +508,23 @@
  * an error code.
  **/
 int
-gsasl_decode (Gsasl_session * sctx,
-             const char *input,
-             size_t input_len, char *output, size_t * output_len)
+gsasl_decode_inline (Gsasl_session * sctx,
+                    const char *input, size_t input_len,
+                    char *output, size_t * output_len)
 {
-  return gsasl_decode_inline (sctx, input, input_len, output, output_len);
+  char *tmp;
+  size_t tmplen;
+  int res;
+
+  res = gsasl_decode (sctx, input, input_len, &tmp, &tmplen);
+  if (res == GSASL_OK)
+    {
+      if (*output_len < tmplen)
+       return GSASL_TOO_SMALL_BUFFER;
+      *output_len = tmplen;
+      memcpy (output, tmp, tmplen);
+      free (output);
+    }
+
+  return res;
 }
--- /home/cvs/gsasl/lib/src/xcode.c     2004/09/20 23:47:52     1.3
+++ /home/cvs/gsasl/lib/src/xcode.c     2004/09/23 00:20:57     1.4
@@ -25,16 +25,17 @@
 _gsasl_code (Gsasl_session * sctx,
             _Gsasl_code_function code,
             const char *input, size_t input_len,
-            char *output, size_t * output_len)
+            char **output, size_t * output_len)
 {
 
   if (code == NULL)
     {
-      if (*output_len < input_len)
-       return GSASL_TOO_SMALL_BUFFER;
       *output_len = input_len;
-      if (output)
-       memcpy (output, input, input_len);
+      *output = malloc (*output_len);
+      if (!*output)
+       return GSASL_MALLOC_ERROR;
+
+      memcpy (*output, input, input_len);
       return GSASL_OK;
     }
 
@@ -42,23 +43,26 @@
 }
 
 /**
- * gsasl_encode_inline:
+ * gsasl_encode:
  * @sctx: libgsasl session handle.
  * @input: input byte array.
  * @input_len: size of input byte array.
- * @output: output byte array.
+ * @output: newly allocated output byte array.
  * @output_len: size of output byte array.
  *
  * Encode data according to negotiated SASL mechanism.  This might mean
  * that data is integrity or privacy protected.
  *
+ * The @output buffer is allocated by this function, and it is the
+ * responsibility of caller to deallocate it by calling free(@output).
+ *
  * Return value: Returns GSASL_OK if encoding was successful, otherwise
  * an error code.
  **/
 int
-gsasl_encode_inline (Gsasl_session * sctx,
-                    const char *input, size_t input_len,
-                    char *output, size_t * output_len)
+gsasl_encode (Gsasl_session * sctx,
+             const char *input, size_t input_len,
+             char **output, size_t * output_len)
 {
   _Gsasl_code_function code;
 
@@ -71,23 +75,26 @@
 }
 
 /**
- * gsasl_decode_inline:
+ * gsasl_decode:
  * @sctx: libgsasl session handle.
  * @input: input byte array.
  * @input_len: size of input byte array.
- * @output: output byte array.
+ * @output: newly allocated output byte array.
  * @output_len: size of output byte array.
  *
  * Decode data according to negotiated SASL mechanism.  This might mean
  * that data is integrity or privacy protected.
  *
+ * The @output buffer is allocated by this function, and it is the
+ * responsibility of caller to deallocate it by calling free(@output).
+ *
  * Return value: Returns GSASL_OK if encoding was successful, otherwise
  * an error code.
  **/
 int
-gsasl_decode_inline (Gsasl_session * sctx,
-                    const char *input, size_t input_len,
-                    char *output, size_t * output_len)
+gsasl_decode (Gsasl_session * sctx,
+             const char *input, size_t input_len,
+             char **output, size_t * output_len)
 {
   _Gsasl_code_function code;
 





reply via email to

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