]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Library/FdtLib/fdt.c
EmbeddedPkg/FdtLib: Update FdtLib to v1.4.5
[mirror_edk2.git] / EmbeddedPkg / Library / FdtLib / fdt.c
index 963952820bc6df992e80eac53a77f09ffc02a1fb..29756a8795f06979f8885fd2f8d4eb10321eeb36 100644 (file)
@@ -76,18 +76,19 @@ int fdt_check_header(const void *fdt)
 \r
 const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)\r
 {\r
-       const char *p;\r
+       unsigned absoffset = offset + fdt_off_dt_struct(fdt);\r
+\r
+       if ((absoffset < offset)\r
+           || ((absoffset + len) < absoffset)\r
+           || (absoffset + len) > fdt_totalsize(fdt))\r
+               return NULL;\r
 \r
        if (fdt_version(fdt) >= 0x11)\r
                if (((offset + len) < offset)\r
                    || ((offset + len) > fdt_size_dt_struct(fdt)))\r
                        return NULL;\r
 \r
-       p = _fdt_offset_ptr(fdt, offset);\r
-\r
-       if (p + len < p)\r
-               return NULL;\r
-       return p;\r
+       return _fdt_offset_ptr(fdt, offset);\r
 }\r
 \r
 uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)\r