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:56:25 +0000 (08:56 +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 94ccdf27160d35e7ecbd86817478b3cc5c9e8909..3f2c5f96cdde121837dfeecc7712ec29efe0375e 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;