rpcd-mod-luci: Fix parsing of DUID-LLT's in duid2ea
authorNiels Widger <niels@qacafe.com>
Thu, 25 Feb 2021 20:31:00 +0000 (15:31 -0500)
committerJo-Philipp Wich <jo@mein.io>
Mon, 1 Mar 2021 07:55:46 +0000 (08:55 +0100)
Fix parsing of DUID-LLT's in duid2ea.  Unlike DUID-LL's, DUID-LLT's have a 32-bit time field between the hardware type and link-layer address fields, see RFC 3315 Sections 9.2 and 9.4:

https://tools.ietf.org/html/rfc3315#section-9.2
https://tools.ietf.org/html/rfc3315#section-9.4

therefore, the link-layer address starts at offset 16 instead of 8.

Signed-off-by: Niels Widger <niels@qacafe.com>
(cherry picked from commit 8920a2bf71e544fada3de824126a5c8f1c596b63)

libs/rpcd-mod-luci/src/luci.c

index ae4f3eee8c250ef90b4af80e77ce0662c6d0c3a8..4cdf91b1a3b1208e1a1cd2e8fc1563877bf274cd 100644 (file)
@@ -285,7 +285,7 @@ duid2ea(const char *duid)
        switch (len) {
        case 28:
                if (!strncmp(duid, "00010001", 8))
-                       p = duid + 8;
+                       p = duid + 16;
 
                break;