mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
xilinx: zynqmp: Use strlen only if env_get doesn't return null
Add check if boot_targets exists in environment and then generate new_targets env accordingly. Performing strlen on null address causes it to fail with exception if isolation is enabled with DDR address zero as secure. It works with out isolation enabled as zero is valid address but it may lead to junk values in boot_targets. This patch fixes the issue by checking return value of env_get so that it generate boot_targets properly. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
3c0e607c31
commit
01c42d3d74
1 changed files with 10 additions and 3 deletions
|
@ -346,6 +346,7 @@ int board_late_init(void)
|
|||
u8 bootmode;
|
||||
const char *mode;
|
||||
char *new_targets;
|
||||
char *env_targets;
|
||||
int ret;
|
||||
|
||||
if (!(gd->flags & GD_FLG_ENV_DEFAULT)) {
|
||||
|
@ -418,10 +419,16 @@ int board_late_init(void)
|
|||
* One terminating char + one byte for space between mode
|
||||
* and default boot_targets
|
||||
*/
|
||||
new_targets = calloc(1, strlen(mode) +
|
||||
strlen(env_get("boot_targets")) + 2);
|
||||
env_targets = env_get("boot_targets");
|
||||
if (env_targets) {
|
||||
new_targets = calloc(1, strlen(mode) +
|
||||
strlen(env_targets) + 2);
|
||||
sprintf(new_targets, "%s %s", mode, env_targets);
|
||||
} else {
|
||||
new_targets = calloc(1, strlen(mode) + 2);
|
||||
sprintf(new_targets, "%s", mode);
|
||||
}
|
||||
|
||||
sprintf(new_targets, "%s %s", mode, env_get("boot_targets"));
|
||||
env_set("boot_targets", new_targets);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue