[OpenBIOS] [PATCH] bootinfo_load: recognize EOT as end of bootinfo

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Thu Jun 18 08:28:01 CEST 2015


On 18/06/15 05:05, Cormac O'Brien wrote:

> Mac OS 9's CHRP boot info is delimited by an ASCII EOT, so the bootscript
> loader will truncate the malloc() size if it encounters one to avoid an
> out-of-memory error.

I think a bit more context is needed here, i.e. something along the
lines of OS 9's boot info consists of a standard Forth bootscript
terminated by by an EOT character followed by a large binary blob which
is relocated by the Forth payload.

> Signed-off-by: Cormac O'Brien <i.am.cormac.obrien at gmail.com>
> 
> ---
>  libopenbios/bootinfo_load.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/libopenbios/bootinfo_load.c b/libopenbios/bootinfo_load.c
> index fa9e36b..a3ce00e 100644
> --- a/libopenbios/bootinfo_load.c
> +++ b/libopenbios/bootinfo_load.c
> @@ -161,6 +161,15 @@ bootinfo_init_program(void)
>  	feval("load-size");
>  	size = POP();

And a couple of lines comment here to reflect above is good for people
that don't have the git history to hand and are wondering what is going
on here.

> +	current = 0;
> +	while (current < size) {
> +		if (base[current] == 0x04) {
> +			size = current;
> +			break;
> +		}
> +		current++;
> +	}
> +
>  	bootscript = malloc(size);
>  	if (bootscript == NULL) {
>  		DPRINTF("Can't malloc %d bytes\n", size);
> 

Other than that, it's a lot simpler than the previous version and
looking good.


ATB,

Mark.




More information about the OpenBIOS mailing list