# HG changeset patch # User Pascal Bellard # Date 1590424714 0 # Node ID e93fa0cecd8ad855717c7e9333756ef9f35ace6e # Parent d33c3c211ef8b725b8c5b91233a21447991d8f25 linld/isoboot: canonicalize filename diff -r d33c3c211ef8 -r e93fa0cecd8a linld/stuff/src/_ISOBEG.ASM --- a/linld/stuff/src/_ISOBEG.ASM Mon May 25 10:10:30 2020 +0000 +++ b/linld/stuff/src/_ISOBEG.ASM Mon May 25 16:38:34 2020 +0000 @@ -60,36 +60,25 @@ ; build arg ;*************************************************************** - mov bx,endbzimage-bzimage mov si,80h - mov di,si lodsb - add [di],bl cbw - mov bp,-1 -skipspace: - inc bp - cmp [byte bp+si]," " - je skipspace - xchg ax,cx - add si,cx + xchg ax,bx + mov [bx+si],bh ; set EOS +searchStart: + lodsb + cmp al,0 + je _abort + cmp al,' ' + je searchStart dec si - lea di,[bx+si] - mov [di+1],bh - sub cx,bp - std - rep - movsb + mov di,offset filename push di - mov si,offset endbzimage-1 - mov cl,bl - rep - movsb + mov ah,60h ; canonicalize filename + int 21h + jc _abort + ifdef WITH_LONG_FILENAME pop si - inc si - cld - - ifdef LONG_FILENAME mov ax,716Ch xor bx,bx ; R/O ;xor cx,cx ; attributes @@ -97,10 +86,12 @@ stc int 21h jnc opened + mov dx,si + else + pop dx endif mov ax,3d00h ; read-only+compatibility ;mov cl,0 ; attribute mask - mov dx,si int 21h jnc opened @@ -117,9 +108,9 @@ jc_abort: jc _abort +; patch magic ;*************************************************************** -; patch magic extrn @readmenu$qv:near call @readmenu$qv mov ax,[_isostate.filemod] @@ -134,7 +125,7 @@ jnz @@loop1 push ds pop es - lea di,[bp+magic-bzimage+81h] + mov di,offset magic @@loop2: pop ax add al,'0' @@ -142,6 +133,7 @@ loop @@loop2 ; patch initrd +;*************************************************************** cwd or [_isostate.curdirsize],-1 jmp patchtest @@ -158,7 +150,7 @@ jne patchlp cmp dx,100h je initrddone - lea di,[bp+rootfs-bzimage+87h] + mov di,offset dotgz or dh,dh je modify add di,4 @@ -168,14 +160,32 @@ movsw modify: xchg ax,dx + mov ah,'.' + stosw + mov ax,'zg' + stosw + mov ax,'!,' + stosw +initrddone: + +;*************************************************************** + + mov si, offset cmdline + mov di, 82h +copy: + mov ah,al + lodsb + cmp al,' ' + jne docopy + cmp al,ah + je copy +docopy: stosb - mov si,offset dotgz - mov cl,5 - rep - movsb -initrddone: - -;*************************************************************** + cmp al,0 + jnz copy + xchg di,ax + sub al, 82h + mov [80h],al mov ax,offset linld call iso_open @@ -183,6 +193,7 @@ mov cx,[word _isostate.filesize] mov dx,100h jmp near unfold + patchlp: mov si,[_isostate.filename] mov di,offset rootfs @@ -204,9 +215,10 @@ db "/boot",0 linld: db "linld.com",0 -bzimage: +cmdline: db "-f " - ;db "image=boot\bzImage " + ;db "image=boot\" + ;db "bzImage " db "initrd=" rootfs: db "rootfs" @@ -218,7 +230,7 @@ magic: db "0 bootfrom=" ; "65535 bootfrom=" -endbzimage: +filename: ;*************************************************************** diff -r d33c3c211ef8 -r e93fa0cecd8a syslinux/stuff/iso2exe/init --- a/syslinux/stuff/iso2exe/init Mon May 25 10:10:30 2020 +0000 +++ b/syslinux/stuff/iso2exe/init Mon May 25 16:38:34 2020 +0000 @@ -134,7 +134,7 @@ uudecode - >> $1 << EOT HEADERCODE EOT - ddq if=/mnt/slitaz/boot/linld.com >> $1 + ddq if=/media/slitaz/boot/linld.com >> $1 } checkmagic() diff -r d33c3c211ef8 -r e93fa0cecd8a syslinux/stuff/iso2exe/taziso --- a/syslinux/stuff/iso2exe/taziso Mon May 25 10:10:30 2020 +0000 +++ b/syslinux/stuff/iso2exe/taziso Mon May 25 16:38:34 2020 +0000 @@ -40,7 +40,7 @@ uudecode - >> $1 << EOT HEADERCODE EOT - ddq if=/mnt/slitaz/boot/linld.com >> $1 + ddq if=$media/boot/linld.com >> $1 } uncpio()