mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-28 08:35:38 +00:00
boot: Handle running out of labels
If only a single label is provided in the list, bootdev_next_label() does not operate correctly and reads beyond the end of the pointer list. Fix this by adding a new check. Also add a note to convert this array to an alist Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
6acb0d28b0
commit
199648bac1
2 changed files with 6 additions and 0 deletions
|
@ -579,6 +579,9 @@ int bootdev_next_label(struct bootflow_iter *iter, struct udevice **devp,
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
|
||||||
log_debug("next\n");
|
log_debug("next\n");
|
||||||
|
if (iter->cur_label >= 0 && !iter->labels[iter->cur_label])
|
||||||
|
return log_msg_ret("fil", -ENODEV);
|
||||||
|
|
||||||
for (dev = NULL; !dev && iter->labels[++iter->cur_label];) {
|
for (dev = NULL; !dev && iter->labels[++iter->cur_label];) {
|
||||||
const char *label = iter->labels[iter->cur_label];
|
const char *label = iter->labels[iter->cur_label];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -22,6 +22,9 @@ struct udevice;
|
||||||
* This is attached to the (only) bootstd device, so there is only one instance
|
* This is attached to the (only) bootstd device, so there is only one instance
|
||||||
* of this struct. It provides overall information about bootdevs and bootflows.
|
* of this struct. It provides overall information about bootdevs and bootflows.
|
||||||
*
|
*
|
||||||
|
* TODO(sjg@chromium.org): Convert prefixes, bootdev_order and env_order to use
|
||||||
|
* alist
|
||||||
|
*
|
||||||
* @prefixes: NULL-terminated list of prefixes to use for bootflow filenames,
|
* @prefixes: NULL-terminated list of prefixes to use for bootflow filenames,
|
||||||
* e.g. "/", "/boot/"; NULL if none
|
* e.g. "/", "/boot/"; NULL if none
|
||||||
* @bootdev_order: Order to use for bootdevs (or NULL if none), with each item
|
* @bootdev_order: Order to use for bootdevs (or NULL if none), with each item
|
||||||
|
|
Loading…
Add table
Reference in a new issue