From 02cc7665fe0cf8d7bef461ebd793be940a73cdda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Fri, 23 Mar 2012 18:26:03 -0400 Subject: [PATCH] wfreerdp: fix compilation warnings --- libfreerdp-codec/nsc_encode.c | 3 +- libfreerdp-rail/window.c | 1 + libfreerdp-sspi/Kerberos/kerberos.c | 63 ++++++++++++++++++----------- libfreerdp-sspi/Kerberos/kerberos.h | 10 ++--- 4 files changed, 48 insertions(+), 29 deletions(-) diff --git a/libfreerdp-codec/nsc_encode.c b/libfreerdp-codec/nsc_encode.c index 68975698a..78fb208ff 100644 --- a/libfreerdp-codec/nsc_encode.c +++ b/libfreerdp-codec/nsc_encode.c @@ -351,11 +351,12 @@ void nsc_compose_message(NSC_CONTEXT* context, STREAM* s, stream_write_uint8(s, context->nsc_stream.ColorLossLevel); /* ColorLossLevel (1 byte) */ stream_write_uint8(s, context->nsc_stream.ChromaSubSamplingLevel); /* ChromaSubsamplingLevel (1 byte) */ stream_write_uint16(s, 0); /* Reserved (2 bytes) */ + for (i = 0; i < 4; i++) { if (context->nsc_stream.PlaneByteCount[i] > 0) { - stream_check_size(s, context->nsc_stream.PlaneByteCount[i]); + stream_check_size(s, (int) context->nsc_stream.PlaneByteCount[i]); stream_write(s, context->priv->plane_buf[i], context->nsc_stream.PlaneByteCount[i]); } } diff --git a/libfreerdp-rail/window.c b/libfreerdp-rail/window.c index 1ede11627..c8f25e536 100644 --- a/libfreerdp-rail/window.c +++ b/libfreerdp-rail/window.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "librail.h" diff --git a/libfreerdp-sspi/Kerberos/kerberos.c b/libfreerdp-sspi/Kerberos/kerberos.c index 1f1be8cd5..2172f2f1f 100644 --- a/libfreerdp-sspi/Kerberos/kerberos.c +++ b/libfreerdp-sspi/Kerberos/kerberos.c @@ -104,7 +104,7 @@ time_t get_local_time(char* str) return freerdp_get_unix_time_from_generalized_time(str); } -uint32 get_clock_skew(char* str) +time_t get_clock_skew(char* str) { time_t ctime; ctime = time(NULL); @@ -893,44 +893,50 @@ void krb_save_ticket(KRB_CONTEXT* krb_ctx, KrbKDCREP* kdc_rep) dst = NULL; src = &(kdc_rep->etgt); - if(kdc_rep->type == KRB_TAG_ASREP) + if (kdc_rep->type == KRB_TAG_ASREP) dst = &(krb_ctx->asticket); - else if(kdc_rep->type == KRB_TAG_TGSREP) + else if (kdc_rep->type == KRB_TAG_TGSREP) dst = &(krb_ctx->tgsticket); + dst->tktvno = src->tktvno; dst->realm = xstrdup(src->realm); dst->sname = xstrdup(src->sname); dst->enc_part.enctype = src->enc_part.enctype; dst->enc_part.kvno = src->enc_part.kvno; + freerdp_blob_copy(&(dst->enc_part.encblob), &(src->enc_part.encblob)); } void krb_reqbody_init(KRB_CONTEXT* krb_ctx, KDCReqBody* req_body, uint8 reqtype) { - uint32 t; + time_t t; + req_body->cname = xstrdup(krb_ctx->cname); req_body->realm = xstrdup(krb_ctx->realm); - if(reqtype == KRB_TAG_ASREQ) + + if (reqtype == KRB_TAG_ASREQ) { - req_body->kdc_options = 0x40000000 | 0x00800000 | 0x00010000 | 0x00000010; // forwardable , renewable, canonicalize, renewable OK - req_body->sname = xzalloc((strlen(req_body->realm) + 8) * sizeof(char)); - strcpy(req_body->sname, KRB_SERVER); - strcat(req_body->sname, req_body->realm); + req_body->kdc_options = 0x40000000 | 0x00800000 | 0x00010000 | 0x00000010; /* forwardable , renewable, canonicalize, renewable OK */ + req_body->sname = xzalloc((strlen(req_body->realm) + 8) * sizeof(char)); + strcpy(req_body->sname, KRB_SERVER); + strcat(req_body->sname, req_body->realm); } - else if(reqtype == KRB_TAG_TGSREQ) + else if (reqtype == KRB_TAG_TGSREQ) { - req_body->kdc_options = 0x40000000 | 0x00800000 | 0x00010000; // forwardable , renewable, canonicalize - req_body->sname = xzalloc((strlen(krb_ctx->settings->hostname) + 10) * sizeof(char)); - strcpy(req_body->sname, APP_SERVER); - strcat(req_body->sname, krb_ctx->settings->hostname); + req_body->kdc_options = 0x40000000 | 0x00800000 | 0x00010000; /* forwardable , renewable, canonicalize */ + req_body->sname = xzalloc((strlen(krb_ctx->settings->hostname) + 10) * sizeof(char)); + strcpy(req_body->sname, APP_SERVER); + strcat(req_body->sname, krb_ctx->settings->hostname); } t = time(NULL); - t += krb_ctx->clockskew; // fix clockskew + t += krb_ctx->clockskew; /* fix clockskew */ + req_body->from = get_utc_time((time_t)(t)); req_body->till = get_utc_time((time_t)(t + 473040000)); req_body->rtime = get_utc_time((time_t)(t + 473040000)); - crypto_nonce((uint8*)&(req_body->nonce), 4); + + crypto_nonce((uint8*) &(req_body->nonce), 4); } KrbASREQ* krb_asreq_new(KRB_CONTEXT* krb_ctx, uint8 errcode) @@ -939,15 +945,19 @@ KrbASREQ* krb_asreq_new(KRB_CONTEXT* krb_ctx, uint8 errcode) PAData** lpa_data; uint8 pacntmax, i; pacntmax = 2; + krb_asreq = xnew(KrbASREQ); krb_asreq->pvno = KRB_VERSION; krb_asreq->type = KRB_TAG_ASREQ; krb_asreq->pa_pac_request = 0xff; //true krb_asreq->padata = (PAData**)xzalloc((pacntmax + 1) * sizeof(PAData*)); lpa_data = krb_asreq->padata; - for(i = 0;i < pacntmax;i++) + + for (i = 0; i < pacntmax; i++) *(lpa_data + i) = (PAData*)xzalloc(sizeof(PAData)); + krb_reqbody_init(krb_ctx, &(krb_asreq->req_body), krb_asreq->type); + return krb_asreq; } @@ -965,21 +975,24 @@ KrbAPREQ* krb_apreq_new(KRB_CONTEXT* krb_ctx, Ticket* ticket, Authenticator* krb krb_apreq = xnew(KrbAPREQ); krb_apreq->pvno = KRB_VERSION; krb_apreq->type = KRB_TAG_APREQ; - krb_apreq->ap_options = 0x00000000 | 0x00000000 | 0x00000000; //Reserved (bit 31), Use session Key (bit 30), Mututal Required (bit 29) + krb_apreq->ap_options = 0x00000000 | 0x00000000 | 0x00000000; /* Reserved (bit 31), Use session Key (bit 30), Mututal Required (bit 29) */ krb_apreq->ticket = ticket; - if(krb_auth != NULL) + + if (krb_auth != NULL) { len = krb_encode_authenticator(as, krb_auth); msg.data = as->p; msg.length = len; - encmsg = crypto_kdcmsg_encrypt(&msg, krb_ctx->askey, 7); //RFC4757 section 3 for msgtype (T=7) + encmsg = crypto_kdcmsg_encrypt(&msg, krb_ctx->askey, 7); /* RFC4757 section 3 for msgtype (T=7) */ krb_apreq->enc_auth.enctype = krb_ctx->askey->enctype; krb_apreq->enc_auth.kvno = -1; krb_apreq->enc_auth.encblob.data = encmsg->data; krb_apreq->enc_auth.encblob.length = encmsg->length; xfree(encmsg); } + stream_free(as); + return krb_apreq; } @@ -988,20 +1001,24 @@ KrbTGSREQ* krb_tgsreq_new(KRB_CONTEXT* krb_ctx, uint8 errcode) KrbTGSREQ* krb_tgsreq; uint8 pacntmax; pacntmax = 1; + krb_tgsreq = xnew(KrbTGSREQ); krb_tgsreq->pvno = KRB_VERSION; krb_tgsreq->type = KRB_TAG_TGSREQ; - krb_tgsreq->pa_pac_request = 0xff; //true - krb_tgsreq->padata = (PAData**)xzalloc((pacntmax + 1) * sizeof(PAData*)); + krb_tgsreq->pa_pac_request = 0xFF; /* true */ + + krb_tgsreq->padata = (PAData**) xzalloc((pacntmax + 1) * sizeof(PAData*)); *(krb_tgsreq->padata) = xnew(PAData); *(krb_tgsreq->padata + 1) = NULL; + krb_reqbody_init(krb_ctx, &(krb_tgsreq->req_body), krb_tgsreq->type); + return krb_tgsreq; } void krb_free_ticket(Ticket* ticket) { - if(ticket != NULL) + if (ticket != NULL) { xfree(ticket->realm); xfree(ticket->sname); diff --git a/libfreerdp-sspi/Kerberos/kerberos.h b/libfreerdp-sspi/Kerberos/kerberos.h index 6b96c9334..6d65c244f 100644 --- a/libfreerdp-sspi/Kerberos/kerberos.h +++ b/libfreerdp-sspi/Kerberos/kerberos.h @@ -155,8 +155,8 @@ struct _ENC_KDC_REPPART KrbENCKey key; int nonce; uint32 flags; - uint32 authtime; - uint32 endtime; + time_t authtime; + time_t endtime; char *realm; char *sname; }; @@ -296,8 +296,8 @@ struct _KRB_CONTEXT SEC_WINNT_AUTH_IDENTITY identity; rdpBlob passwd; sint32 enctype; - sint32 clockskew; - uint32 ctime; + time_t clockskew; + time_t ctime; uint32 nonce; Ticket asticket; KrbENCKey* askey; @@ -313,7 +313,7 @@ CtxtHandle* krbctx_client_init(rdpSettings* settings, SEC_WINNT_AUTH_IDENTITY* i boolean tcp_is_ipaddr(const char* hostname); char* get_utc_time(time_t t); time_t get_local_time(char* str); -uint32 get_clock_skew(char* str); +time_t get_clock_skew(char* str); char* get_dns_queryname(char *host, char* protocol); int krb_get_realm(rdpSettings* settings); KDCENTRY* krb_locate_kdc(rdpSettings* settings);