diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/krb5/krb/rd_priv.c | 6 | ||||
| -rw-r--r-- | src/lib/krb5/krb/rd_safe.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/rd_priv.c b/src/lib/krb5/krb/rd_priv.c index 5a3b1b7c9..00d454703 100644 --- a/src/lib/krb5/krb/rd_priv.c +++ b/src/lib/krb5/krb/rd_priv.c @@ -185,6 +185,12 @@ OLDDECLARG(krb5_data *, outbuf) cleanup_mesg(); return KRB5KRB_AP_ERR_BADADDR; } + if (recv_addr && privmsg_enc_part->r_address && + !krb5_address_compare(recv_addr, privmsg_enc_part->r_address)) { + cleanup_data(); + cleanup_mesg(); + return KRB5KRB_AP_ERR_BADADDR; + } if (retval = krb5_gen_replay_name(sender_addr, "_priv", &replay.client)) { cleanup_data(); diff --git a/src/lib/krb5/krb/rd_safe.c b/src/lib/krb5/krb/rd_safe.c index 315570855..c2e297139 100644 --- a/src/lib/krb5/krb/rd_safe.c +++ b/src/lib/krb5/krb/rd_safe.c @@ -105,6 +105,11 @@ krb5_data *outbuf; cleanup(); return KRB5KRB_AP_ERR_BADADDR; } + if (recv_addr && message->r_address && + !krb5_address_compare(recv_addr, message->r_address)) { + cleanup(); + return KRB5KRB_AP_ERR_BADADDR; + } if (retval = krb5_gen_replay_name(sender_addr, "_safe", &replay.client)) { cleanup(); |
