[Top][All Lists]
[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;
- CVS gsasl/lib/src, (continued)
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/20
- CVS gsasl/lib/src, gsasl-commit, 2004/09/22
- CVS gsasl/lib/src, gsasl-commit, 2004/09/22
- CVS gsasl/lib/src,
gsasl-commit <=
- CVS gsasl/lib/src, gsasl-commit, 2004/09/22
- CVS gsasl/lib/src, gsasl-commit, 2004/09/22
- CVS gsasl/lib/src, gsasl-commit, 2004/09/22
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23
- CVS gsasl/lib/src, gsasl-commit, 2004/09/23