[Top][All Lists]
[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: |
Thu, 23 Sep 2004 02:20:56 +0200 |
Update of /home/cvs/gsasl/lib/gssapi
In directory dopio:/tmp/cvs-serv16592/lib/gssapi
Modified Files:
client.c x-gssapi.h
Log Message:
(gsasl_encode. gsasl_decode): Allocate OUTPUT buffer. Change in prototype.
Update types and callers.
--- /home/cvs/gsasl/lib/gssapi/client.c 2004/09/21 02:10:32 1.3
+++ /home/cvs/gsasl/lib/gssapi/client.c 2004/09/23 00:20:56 1.4
@@ -248,7 +248,7 @@
_gsasl_gssapi_client_encode (Gsasl_session_ctx * sctx,
void *mech_data,
const char *input, size_t input_len,
- char *output, size_t * output_len)
+ char **output, size_t * output_len)
{
_Gsasl_gssapi_client_state *state = mech_data;
OM_uint32 min_stat, maj_stat;
@@ -270,19 +270,30 @@
NULL, &output_message_buffer);
if (GSS_ERROR (maj_stat))
return GSASL_GSSAPI_WRAP_ERROR;
- if (*output_len < output_message_buffer.length)
- return GSASL_TOO_SMALL_BUFFER;
- if (output)
- memcpy (output, output_message_buffer.value,
- output_message_buffer.length);
*output_len = output_message_buffer.length;
+ *output = malloc (input_len);
+ if (!*output)
+ {
+ maj_stat = gss_release_buffer (&min_stat, &output_message_buffer);
+ return GSASL_MALLOC_ERROR;
+ }
+ memcpy (*output, output_message_buffer.value,
+ output_message_buffer.length);
+
+ maj_stat = gss_release_buffer (&min_stat, &output_message_buffer);
+ if (GSS_ERROR (maj_stat))
+ {
+ free (*output);
+ return GSASL_GSSAPI_RELEASE_BUFFER_ERROR;
+ }
}
else
{
*output_len = input_len;
- if (output)
- memcpy (output, input, input_len);
- return GSASL_OK;
+ *output = malloc (input_len);
+ if (!*output)
+ return GSASL_MALLOC_ERROR;
+ memcpy (*output, input, input_len);
}
return GSASL_OK;
@@ -292,7 +303,7 @@
_gsasl_gssapi_client_decode (Gsasl_session_ctx * sctx,
void *mech_data,
const char *input, size_t input_len,
- char *output, size_t * output_len)
+ char **output, size_t * output_len)
{
_Gsasl_gssapi_client_state *state = mech_data;
OM_uint32 min_stat, maj_stat;
@@ -312,19 +323,30 @@
&output_message_buffer, NULL, NULL);
if (GSS_ERROR (maj_stat))
return GSASL_GSSAPI_UNWRAP_ERROR;
- if (*output_len < output_message_buffer.length)
- return GSASL_TOO_SMALL_BUFFER;
- if (output)
- memcpy (output, output_message_buffer.value,
- output_message_buffer.length);
*output_len = output_message_buffer.length;
+ *output = malloc (input_len);
+ if (!*output)
+ {
+ maj_stat = gss_release_buffer (&min_stat, &output_message_buffer);
+ return GSASL_MALLOC_ERROR;
+ }
+ memcpy (*output, output_message_buffer.value,
+ output_message_buffer.length);
+
+ maj_stat = gss_release_buffer (&min_stat, &output_message_buffer);
+ if (GSS_ERROR (maj_stat))
+ {
+ free (*output);
+ return GSASL_GSSAPI_RELEASE_BUFFER_ERROR;
+ }
}
else
{
*output_len = input_len;
- if (output)
- memcpy (output, input, input_len);
- return GSASL_OK;
+ *output = malloc (input_len);
+ if (!*output)
+ return GSASL_MALLOC_ERROR;
+ memcpy (*output, input, input_len);
}
return GSASL_OK;
--- /home/cvs/gsasl/lib/gssapi/x-gssapi.h 2004/09/21 02:11:38 1.6
+++ /home/cvs/gsasl/lib/gssapi/x-gssapi.h 2004/09/23 00:20:56 1.7
@@ -38,11 +38,11 @@
extern int _gsasl_gssapi_client_encode (Gsasl_session_ctx * sctx,
void *mech_data,
const char *input, size_t input_len,
- char *output, size_t * output_len);
+ char **output, size_t * output_len);
extern int _gsasl_gssapi_client_decode (Gsasl_session_ctx * sctx,
void *mech_data,
const char *input, size_t input_len,
- char *output, size_t * output_len);
+ char **output, size_t * output_len);
extern int _gsasl_gssapi_server_start (Gsasl_session_ctx * sctx,
void **mech_data);
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/17
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/18
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/18
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/18
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/20
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/20
- CVS gsasl/lib/gssapi,
gsasl-commit <=
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/23
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/24
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/24
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/24
- CVS gsasl/lib/gssapi, gsasl-commit, 2004/09/26