diff options
Diffstat (limited to 'src/kdc')
-rw-r--r-- | src/kdc/kdc_transit.c | 3 | ||||
-rw-r--r-- | src/kdc/kdc_util.c | 15 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/kdc/kdc_transit.c b/src/kdc/kdc_transit.c index 9947761..c540ad2 100644 --- a/src/kdc/kdc_transit.c +++ b/src/kdc/kdc_transit.c @@ -135,7 +135,8 @@ data2string (krb5_data *d) char *s; s = malloc(d->length + 1); if (s) { - memcpy(s, d->data, d->length); + if (d->length > 0) + memcpy(s, d->data, d->length); s[d->length] = 0; } return s; diff --git a/src/kdc/kdc_util.c b/src/kdc/kdc_util.c index 4e85f68..9948e1b 100644 --- a/src/kdc/kdc_util.c +++ b/src/kdc/kdc_util.c @@ -1091,16 +1091,21 @@ verify_for_user_checksum(krb5_context context, p += 4; for (i = 0; i < krb5_princ_size(context, req->user); i++) { - memcpy(p, krb5_princ_component(context, req->user, i)->data, - krb5_princ_component(context, req->user, i)->length); + if (krb5_princ_component(context, req->user, i)->length > 0) { + memcpy(p, krb5_princ_component(context, req->user, i)->data, + krb5_princ_component(context, req->user, i)->length); + } p += krb5_princ_component(context, req->user, i)->length; } - memcpy(p, krb5_princ_realm(context, req->user)->data, - krb5_princ_realm(context, req->user)->length); + if (krb5_princ_realm(context, req->user)->length > 0) { + memcpy(p, krb5_princ_realm(context, req->user)->data, + krb5_princ_realm(context, req->user)->length); + } p += krb5_princ_realm(context, req->user)->length; - memcpy(p, req->auth_package.data, req->auth_package.length); + if (req->auth_package.length > 0) + memcpy(p, req->auth_package.data, req->auth_package.length); p += req->auth_package.length; code = krb5_c_verify_checksum(context, |