subsys/random: Add _ASSERT() test on returned device_get_binding

If there is a build setup problem where a device driver has not been
setup for the entropy driver then the call to device_get_binding()
will return a NULL value and the code will continue to use this NULL
value. The result is a hard fault later in code execution.

Note that CONFIG_ASSERT is by default off so one has to turn this
configuration on to catch this problem.

Signed-off-by: David Leach <david.leach@nxp.com>
This commit is contained in:
David Leach 2017-11-13 14:12:47 -06:00 committed by Andrew Boie
commit 09ce2e218f

View file

@ -21,6 +21,10 @@ u32_t sys_rand32_get(void)
* if the whole operation isn't atomic. * if the whole operation isn't atomic.
*/ */
dev = device_get_binding(CONFIG_ENTROPY_NAME); dev = device_get_binding(CONFIG_ENTROPY_NAME);
__ASSERT((dev != NULL),
"Device driver for %s (CONFIG_ENTROPY_NAME) not found. "
"Check your build configuration!",
CONFIG_ENTROPY_NAME);
atomic_set(&entropy_driver, (atomic_t)(uintptr_t)dev); atomic_set(&entropy_driver, (atomic_t)(uintptr_t)dev);
} }