mirror of
https://gitlab.com/bztsrc/bootboot.git
synced 2023-02-13 20:54:32 -05:00
Only match env on line beginning, fixed issue #23
This commit is contained in:
parent
85a86a3611
commit
e8a91d134c
10 changed files with 30 additions and 15 deletions
|
@ -1110,7 +1110,7 @@ void MapPage(uint64_t virt, uint64_t phys)
|
||||||
*/
|
*/
|
||||||
void ParseEnvironment(uint8_t *env)
|
void ParseEnvironment(uint8_t *env)
|
||||||
{
|
{
|
||||||
uint8_t *end=env+PAGESIZE;
|
uint8_t *end=env+PAGESIZE, *start=env;
|
||||||
DBG(" * Environment\n");
|
DBG(" * Environment\n");
|
||||||
env--; env[PAGESIZE]=0; kne=NULL;
|
env--; env[PAGESIZE]=0; kne=NULL;
|
||||||
while(env<end) {
|
while(env<end) {
|
||||||
|
@ -1134,6 +1134,9 @@ void ParseEnvironment(uint8_t *env)
|
||||||
while(env[0]!=0 && env[-1]!='*' && env[0]!='/')
|
while(env[0]!=0 && env[-1]!='*' && env[0]!='/')
|
||||||
env++;
|
env++;
|
||||||
}
|
}
|
||||||
|
// only match on beginning of line
|
||||||
|
if(env>start && env[-1]!=' '&&env[-1]!='\t'&&env[-1]!='\r'&&env[-1]!='\n')
|
||||||
|
continue;
|
||||||
// parse screen dimensions
|
// parse screen dimensions
|
||||||
if(!memcmp(env,"screen=",7)){
|
if(!memcmp(env,"screen=",7)){
|
||||||
env+=7;
|
env+=7;
|
||||||
|
|
BIN
dist/bootboot.bin
vendored
BIN
dist/bootboot.bin
vendored
Binary file not shown.
BIN
dist/bootboot.efi
vendored
BIN
dist/bootboot.efi
vendored
Binary file not shown.
BIN
dist/bootboot.img
vendored
BIN
dist/bootboot.img
vendored
Binary file not shown.
BIN
dist/bootboot.rom
vendored
BIN
dist/bootboot.rom
vendored
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -3,8 +3,8 @@
|
||||||
extern unsigned char binary_boot_bin[512];
|
extern unsigned char binary_boot_bin[512];
|
||||||
extern unsigned char binary_bootboot_bin[12288];
|
extern unsigned char binary_bootboot_bin[12288];
|
||||||
extern unsigned char binary_bootboot_efi[100932];
|
extern unsigned char binary_bootboot_efi[100932];
|
||||||
extern unsigned char binary_bootboot_img[34672];
|
extern unsigned char binary_bootboot_img[34712];
|
||||||
extern unsigned char binary_LICENCE_broadcom[1594];
|
extern unsigned char binary_LICENCE_broadcom[1594];
|
||||||
extern unsigned char binary_bootcode_bin[52480];
|
extern unsigned char binary_bootcode_bin[52480];
|
||||||
extern unsigned char binary_fixup_dat[7274];
|
extern unsigned char binary_fixup_dat[7290];
|
||||||
extern unsigned char binary_start_elf[3000960];
|
extern unsigned char binary_start_elf[2949088];
|
||||||
|
|
|
@ -1561,6 +1561,13 @@ end if
|
||||||
cmp esi, 0A000h
|
cmp esi, 0A000h
|
||||||
ja .parseend
|
ja .parseend
|
||||||
jmp .skipcom2
|
jmp .skipcom2
|
||||||
|
;only match on beginning of line
|
||||||
|
@@: cmp esi, 9000h
|
||||||
|
je @f
|
||||||
|
cmp byte [esi-1], ' '
|
||||||
|
je @f
|
||||||
|
cmp byte [esi-1], 13
|
||||||
|
jae .next
|
||||||
;parse screen dimensions
|
;parse screen dimensions
|
||||||
@@: cmp dword[esi], 'scre'
|
@@: cmp dword[esi], 'scre'
|
||||||
jne @f
|
jne @f
|
||||||
|
@ -1577,11 +1584,11 @@ end if
|
||||||
jmp .getnext
|
jmp .getnext
|
||||||
;get kernel's filename
|
;get kernel's filename
|
||||||
@@: cmp dword[esi], 'kern'
|
@@: cmp dword[esi], 'kern'
|
||||||
jne @f
|
jne .next
|
||||||
cmp word[esi+4], 'el'
|
cmp word[esi+4], 'el'
|
||||||
jne @f
|
jne .next
|
||||||
cmp byte[esi+6], '='
|
cmp byte[esi+6], '='
|
||||||
jne @f
|
jne .next
|
||||||
add esi, 7
|
add esi, 7
|
||||||
mov edi, kernel
|
mov edi, kernel
|
||||||
.copy: lodsb
|
.copy: lodsb
|
||||||
|
@ -1600,8 +1607,7 @@ end if
|
||||||
.copyend: xor al, al
|
.copyend: xor al, al
|
||||||
stosb
|
stosb
|
||||||
jmp .getnext
|
jmp .getnext
|
||||||
@@:
|
.next: inc esi
|
||||||
inc esi
|
|
||||||
;failsafe
|
;failsafe
|
||||||
.getnext: cmp esi, 0A000h
|
.getnext: cmp esi, 0A000h
|
||||||
jae .parseend
|
jae .parseend
|
||||||
|
|
|
@ -517,7 +517,7 @@ ssize_t disk_read(size_t dev_num, lba_t start, size_t count, unsigned char *buf)
|
||||||
*/
|
*/
|
||||||
void ParseEnvironment(uint8_t *env)
|
void ParseEnvironment(uint8_t *env)
|
||||||
{
|
{
|
||||||
uint8_t *end=env+PAGESIZE;
|
uint8_t *end=env+PAGESIZE, *start=env;
|
||||||
DBG(" * Environment @%p %d bytes\n",env,env ? (int)strlen((char*)env) : 0);
|
DBG(" * Environment @%p %d bytes\n",env,env ? (int)strlen((char*)env) : 0);
|
||||||
env--; env[PAGESIZE]=0; kne=NULL;
|
env--; env[PAGESIZE]=0; kne=NULL;
|
||||||
while(env<end) {
|
while(env<end) {
|
||||||
|
@ -541,6 +541,9 @@ void ParseEnvironment(uint8_t *env)
|
||||||
while(env[0]!=0 && env[-1]!='*' && env[0]!='/')
|
while(env[0]!=0 && env[-1]!='*' && env[0]!='/')
|
||||||
env++;
|
env++;
|
||||||
}
|
}
|
||||||
|
// only match on beginning of line
|
||||||
|
if(env>start && env[-1]!=' '&&env[-1]!='\t'&&env[-1]!='\r'&&env[-1]!='\n')
|
||||||
|
continue;
|
||||||
// parse screen dimensions
|
// parse screen dimensions
|
||||||
if(!memcmp(env,"screen=",7)){
|
if(!memcmp(env,"screen=",7)){
|
||||||
env+=7;
|
env+=7;
|
||||||
|
|
|
@ -1058,6 +1058,9 @@ ParseEnvironment(unsigned char *cfg, int len, INTN argc, CHAR16 **argv)
|
||||||
while(ptr[0]!=0 && ptr[-1]!='*' && ptr[0]!='/')
|
while(ptr[0]!=0 && ptr[-1]!='*' && ptr[0]!='/')
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
|
// only match on beginning of line
|
||||||
|
if(ptr>cfg && ptr[-1]!=' '&&ptr[-1]!='\t'&&ptr[-1]!='\r'&&ptr[-1]!='\n')
|
||||||
|
continue;
|
||||||
// parse screen dimensions
|
// parse screen dimensions
|
||||||
if(!CompareMem(ptr,(const CHAR8 *)"screen=",7)){
|
if(!CompareMem(ptr,(const CHAR8 *)"screen=",7)){
|
||||||
ptr+=7;
|
ptr+=7;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue