summaryrefslogtreecommitdiff
path: root/src/libradius/radius_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libradius/radius_socket.c')
-rw-r--r--src/libradius/radius_socket.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libradius/radius_socket.c b/src/libradius/radius_socket.c
index 115be79fb..b3d90d3e5 100644
--- a/src/libradius/radius_socket.c
+++ b/src/libradius/radius_socket.c
@@ -348,7 +348,14 @@ METHOD(radius_socket_t, decrypt_msk, chunk_t,
enumerator->destroy(enumerator);
if (send.ptr && recv.ptr)
{
- return chunk_cat("mm", recv, send);
+ chunk_t pad = chunk_empty;
+
+ if ((send.len + recv.len) < 64)
+ { /* zero-pad MSK to at least 64 bytes */
+ pad = chunk_alloca(64 - send.len - recv.len);
+ memset(pad.ptr, 0, pad.len);
+ }
+ return chunk_cat("mmc", recv, send, pad);
}
chunk_clear(&send);
chunk_clear(&recv);