From 16c19410b924e617a223c9cfc8456689e7512119 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Wed, 3 Sep 1997 18:12:18 +0000 Subject: [PATCH] send_clear, recv_clear git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3359 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kdc/hprop-common.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/kdc/hprop-common.c b/kdc/hprop-common.c index 9f6b5040d..728dea6b4 100644 --- a/kdc/hprop-common.c +++ b/kdc/hprop-common.c @@ -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; +}