Print this page
8927 sadb_x_kmc_t's KM cookie should be 64-bits (fix improper upstream)

*** 2328,2338 **** sq->kmc = 0; sq->kmp = 0; if ((match & IPSA_Q_KMC) && (sq->kmcext)) { sq->kmp = sq->kmcext->sadb_x_kmc_proto; ! /* Be liberal in what we receive. Special-case IKEv1. */ if (sq->kmp == SADB_X_KMP_IKE) { /* Just in case in.iked is misbehaving... */ sq->kmcext->sadb_x_kmc_reserved = 0; } sq->kmc = sq->kmcext->sadb_x_kmc_cookie64; --- 2328,2343 ---- sq->kmc = 0; sq->kmp = 0; if ((match & IPSA_Q_KMC) && (sq->kmcext)) { sq->kmp = sq->kmcext->sadb_x_kmc_proto; ! /* ! * Be liberal in what we receive. Special-case the IKEv1 ! * cookie, which closed-source in.iked assumes is 32 bits. ! * Now that we store all 64 bits, we should pre-zero the ! * reserved field on behalf of closed-source in.iked. ! */ if (sq->kmp == SADB_X_KMP_IKE) { /* Just in case in.iked is misbehaving... */ sq->kmcext->sadb_x_kmc_reserved = 0; } sq->kmc = sq->kmcext->sadb_x_kmc_cookie64;
*** 3135,3145 **** newbie->ipsa_addtime = gethrestime_sec(); if (kmcext != NULL) { newbie->ipsa_kmp = kmcext->sadb_x_kmc_proto; ! /* Be liberal in what we receive. Special-case IKEv1. */ if (newbie->ipsa_kmp == SADB_X_KMP_IKE) { /* Just in case in.iked is misbehaving... */ kmcext->sadb_x_kmc_reserved = 0; } newbie->ipsa_kmc = kmcext->sadb_x_kmc_cookie64; --- 3140,3155 ---- newbie->ipsa_addtime = gethrestime_sec(); if (kmcext != NULL) { newbie->ipsa_kmp = kmcext->sadb_x_kmc_proto; ! /* ! * Be liberal in what we receive. Special-case the IKEv1 ! * cookie, which closed-source in.iked assumes is 32 bits. ! * Now that we store all 64 bits, we should pre-zero the ! * reserved field on behalf of closed-source in.iked. ! */ if (newbie->ipsa_kmp == SADB_X_KMP_IKE) { /* Just in case in.iked is misbehaving... */ kmcext->sadb_x_kmc_reserved = 0; } newbie->ipsa_kmc = kmcext->sadb_x_kmc_cookie64;