Skip to content

Commit

Permalink
gss_krb5: Use random value to initialize confounder
Browse files Browse the repository at this point in the history
Initialize the value used for the confounder to a random value
rather than starting from zero.
Allow for confounders of length 8 or 16 (which will be needed for AES).

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
  • Loading branch information
Kevin Coffman authored and J. Bruce Fields committed Jun 23, 2008
1 parent db8add5 commit 863a248
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions net/sunrpc/auth_gss/gss_krb5_wrap.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ gss_krb5_remove_padding(struct xdr_buf *buf, int blocksize)
return 0;
}

static inline void
make_confounder(char *p, int blocksize)
static void
make_confounder(char *p, u32 conflen)
{
static u64 i = 0;
u64 *q = (u64 *)p;
Expand All @@ -102,8 +102,22 @@ make_confounder(char *p, int blocksize)
* uniqueness would mean worrying about atomicity and rollover, and I
* don't care enough. */

BUG_ON(blocksize != 8);
*q = i++;
/* initialize to random value */
if (i == 0) {
i = random32();
i = (i << 32) | random32();
}

switch (conflen) {
case 16:
*q++ = i++;
/* fall through */
case 8:
*q++ = i++;
break;
default:
BUG();
}
}

/* Assumptions: the head and tail of inbuf are ours to play with.
Expand Down

0 comments on commit 863a248

Please sign in to comment.