(_gssapi_verify_pad): verify padding of a gss wrapped message and
return its length git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12686 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -178,3 +178,32 @@ gssapi_krb5_decapsulate(OM_uint32 *minor_status,
|
|||||||
out_data->data = p;
|
out_data->data = p;
|
||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify padding of a gss wrapped message and return its length.
|
||||||
|
*/
|
||||||
|
|
||||||
|
OM_uint32
|
||||||
|
_gssapi_verify_pad(gss_buffer_t wrapped_token,
|
||||||
|
size_t datalen,
|
||||||
|
size_t *padlen)
|
||||||
|
{
|
||||||
|
u_char *pad;
|
||||||
|
size_t padlength;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
pad = (u_char *)wrapped_token->value + wrapped_token->length - 1;
|
||||||
|
padlength = *pad;
|
||||||
|
|
||||||
|
if (padlength > datalen)
|
||||||
|
return GSS_S_BAD_MECH;
|
||||||
|
|
||||||
|
for (i = padlength; i > 0 && *pad == padlength; i--, pad--)
|
||||||
|
;
|
||||||
|
if (i != 0)
|
||||||
|
return GSS_S_BAD_MIC;
|
||||||
|
|
||||||
|
*padlen = padlength;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -178,3 +178,32 @@ gssapi_krb5_decapsulate(OM_uint32 *minor_status,
|
|||||||
out_data->data = p;
|
out_data->data = p;
|
||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify padding of a gss wrapped message and return its length.
|
||||||
|
*/
|
||||||
|
|
||||||
|
OM_uint32
|
||||||
|
_gssapi_verify_pad(gss_buffer_t wrapped_token,
|
||||||
|
size_t datalen,
|
||||||
|
size_t *padlen)
|
||||||
|
{
|
||||||
|
u_char *pad;
|
||||||
|
size_t padlength;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
pad = (u_char *)wrapped_token->value + wrapped_token->length - 1;
|
||||||
|
padlength = *pad;
|
||||||
|
|
||||||
|
if (padlength > datalen)
|
||||||
|
return GSS_S_BAD_MECH;
|
||||||
|
|
||||||
|
for (i = padlength; i > 0 && *pad == padlength; i--, pad--)
|
||||||
|
;
|
||||||
|
if (i != 0)
|
||||||
|
return GSS_S_BAD_MIC;
|
||||||
|
|
||||||
|
*padlen = padlength;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user