send_clear, recv_clear
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3359 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -91,3 +91,42 @@ recv_priv(krb5_context context, krb5_auth_context ac, int fd, krb5_data *out)
|
||||
free(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
krb5_error_code
|
||||
send_clear(krb5_context context, int fd, krb5_data data)
|
||||
{
|
||||
unsigned char tmp[4];
|
||||
int len;
|
||||
|
||||
tmp[0] = (data.length >> 24) & 0xff;
|
||||
tmp[1] = (data.length >> 16) & 0xff;
|
||||
tmp[2] = (data.length >> 8) & 0xff;
|
||||
tmp[3] = (data.length >> 0) & 0xff;
|
||||
len = write(fd, tmp, sizeof(tmp));
|
||||
if(len == sizeof(tmp))
|
||||
len = write(fd, data.data, data.length);
|
||||
if(len != data.length)
|
||||
return errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
krb5_error_code
|
||||
recv_clear(krb5_context context, int fd, krb5_data *out)
|
||||
{
|
||||
unsigned char tmp[4];
|
||||
int len;
|
||||
len = read(fd, tmp, sizeof(tmp));
|
||||
if(len == 0){
|
||||
memset(out, 0, sizeof(*out));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(len == sizeof(tmp)){
|
||||
len = (tmp[0] << 24) | (tmp[1] << 16) | (tmp[2] << 8) | tmp[3];
|
||||
krb5_data_alloc(out, len);
|
||||
len = read(fd, out->data, out->length);
|
||||
}
|
||||
if(len != out->length)
|
||||
return errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user