From 702ed1ec72a8e6932ba35f4992b2b77eb5a84daa Mon Sep 17 00:00:00 2001 From: Tassilo Schweyer Date: Mon, 5 May 2025 03:15:52 +0200 Subject: [PATCH] Quick fix to at least decode slightly larger hidden AVPs correctly --- l2tpns.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/l2tpns.c b/l2tpns.c index 53011b2..7938d90 100644 --- a/l2tpns.c +++ b/l2tpns.c @@ -8620,6 +8620,10 @@ static void unhide_value(uint8_t *value, size_t len, uint16_t type, uint8_t *vec size_t d = 0; uint16_t m = htons(type); + // remember first block + uint8_t firstcipher[16]; + memcpy(firstcipher, value, 16); + // Compute initial pad MD5_Init(&ctx); MD5_Update(&ctx, (unsigned char *) &m, 2); @@ -8637,7 +8641,7 @@ static void unhide_value(uint8_t *value, size_t len, uint16_t type, uint8_t *vec { MD5_Init(&ctx); MD5_Update(&ctx, config->l2tp_secret, strlen(config->l2tp_secret)); - MD5_Update(&ctx, last, sizeof(digest)); + MD5_Update(&ctx, firstcipher, sizeof(digest)); MD5_Final(digest, &ctx); d = 0;