Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54b4c246 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dtc: add integer overflow checks in fdt header"

parents 1d9d58dc 56cca4b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
#ifndef _LIBFDT_ENV_H
#ifndef _LIBFDT_ENV_H
#define _LIBFDT_ENV_H
#define _LIBFDT_ENV_H


#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/string.h>


#include <asm/byteorder.h>
#include <asm/byteorder.h>
+14 −0
Original line number Original line Diff line number Diff line
@@ -71,6 +71,20 @@ int fdt_check_header(const void *fdt)
		return -FDT_ERR_BADMAGIC;
		return -FDT_ERR_BADMAGIC;
	}
	}


	if (fdt_off_dt_struct(fdt) > (UINT_MAX - fdt_size_dt_struct(fdt)))
		return FDT_ERR_BADOFFSET;

	if (fdt_off_dt_strings(fdt) > (UINT_MAX -  fdt_size_dt_strings(fdt)))
		return FDT_ERR_BADOFFSET;

	if ((fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt))
	    > fdt_totalsize(fdt))
		return FDT_ERR_BADOFFSET;

	if ((fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt))
	    > fdt_totalsize(fdt))
		return FDT_ERR_BADOFFSET;

	return 0;
	return 0;
}
}


+1 −1
Original line number Original line Diff line number Diff line
@@ -394,7 +394,7 @@ int fdt_del_node(void *fdt, int nodeoffset)
static void _fdt_packblocks(const char *old, char *new,
static void _fdt_packblocks(const char *old, char *new,
			    int mem_rsv_size, int struct_size)
			    int mem_rsv_size, int struct_size)
{
{
	int mem_rsv_off, struct_off, strings_off;
	uint32_t mem_rsv_off, struct_off, strings_off;


	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
	mem_rsv_off = FDT_ALIGN(sizeof(struct fdt_header), 8);
	struct_off = mem_rsv_off + mem_rsv_size;
	struct_off = mem_rsv_off + mem_rsv_size;