forked from KolibriOS/kolibrios
kernel: set maximum length of a stored application path name to 1023 bytes
git-svn-id: svn://kolibrios.org@6338 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8bb7273e0f
commit
22e9386a23
@ -870,23 +870,35 @@ common_app_entry:
|
|||||||
.copy_full_path:
|
.copy_full_path:
|
||||||
mov esi, [current_slot]
|
mov esi, [current_slot]
|
||||||
mov esi, [esi+APPDATA.cur_dir]
|
mov esi, [esi+APPDATA.cur_dir]
|
||||||
|
mov ebx, 1023
|
||||||
mov al, '/'
|
mov al, '/'
|
||||||
stosb
|
stosb
|
||||||
@@:
|
|
||||||
|
.copy_path:
|
||||||
|
dec ebx
|
||||||
|
jz .finish_path
|
||||||
lodsb
|
lodsb
|
||||||
stosb
|
stosb
|
||||||
test al, al
|
test al, al
|
||||||
jnz @B
|
jnz .copy_path
|
||||||
mov byte [edi-1], '/'
|
mov byte [edi-1], '/'
|
||||||
|
|
||||||
|
cmp ecx, ebx
|
||||||
|
jbe @F
|
||||||
|
mov ecx, ebx
|
||||||
|
@@:
|
||||||
lea esi, [ebp+sizeof.APP_HDR]
|
lea esi, [ebp+sizeof.APP_HDR]
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
rep movsb
|
rep movsb
|
||||||
stosb
|
stosb
|
||||||
jmp .check_cmdline
|
jmp .check_cmdline
|
||||||
|
|
||||||
.copy_filename:
|
.finish_path:
|
||||||
|
xor eax, eax
|
||||||
|
stosb
|
||||||
|
jmp .check_cmdline
|
||||||
|
|
||||||
|
.copy_filename:
|
||||||
cmp byte [esi], '/'
|
cmp byte [esi], '/'
|
||||||
jne .copy_full_path
|
jne .copy_full_path
|
||||||
|
|
||||||
|
@ -135,6 +135,19 @@ file_system_lfn:
|
|||||||
lodsb
|
lodsb
|
||||||
@@:
|
@@:
|
||||||
lea ebp, [esi-1]
|
lea ebp, [esi-1]
|
||||||
|
if 0
|
||||||
|
cmp [ebx], dword 0
|
||||||
|
jne @F
|
||||||
|
DEBUGF 1,'read file %s\n',ebp
|
||||||
|
jmp .1
|
||||||
|
@@:
|
||||||
|
cmp [ebx], dword 5
|
||||||
|
jne @F
|
||||||
|
DEBUGF 1,'get file attributes %s\n',ebp
|
||||||
|
@@:
|
||||||
|
.1:
|
||||||
|
end if
|
||||||
|
|
||||||
cmp dword [ebx], 7
|
cmp dword [ebx], 7
|
||||||
jne @F
|
jne @F
|
||||||
mov edx, [ebx+4]
|
mov edx, [ebx+4]
|
||||||
@ -734,7 +747,7 @@ process_replace_file_name:
|
|||||||
uglobal
|
uglobal
|
||||||
lock_flag_for_f30_3 rb 1
|
lock_flag_for_f30_3 rb 1
|
||||||
endg
|
endg
|
||||||
|
|
||||||
sys_current_directory:
|
sys_current_directory:
|
||||||
; mov esi, [current_slot]
|
; mov esi, [current_slot]
|
||||||
; mov esi, [esi+APPDATA.cur_dir]
|
; mov esi, [esi+APPDATA.cur_dir]
|
||||||
@ -759,7 +772,7 @@ sys_current_directory:
|
|||||||
; check lock of the function
|
; check lock of the function
|
||||||
cmp [lock_flag_for_f30_3], 1
|
cmp [lock_flag_for_f30_3], 1
|
||||||
je @f
|
je @f
|
||||||
|
|
||||||
mov esi, ecx
|
mov esi, ecx
|
||||||
mov edi, sysdir_name1
|
mov edi, sysdir_name1
|
||||||
; copying fake directory name
|
; copying fake directory name
|
||||||
@ -778,7 +791,7 @@ sys_current_directory:
|
|||||||
; terminator of name, in case if we get the inlet trash
|
; terminator of name, in case if we get the inlet trash
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
stosb
|
stosb
|
||||||
; increase the pointer of inputs for procedure "process_replace_file_name"
|
; increase the pointer of inputs for procedure "process_replace_file_name"
|
||||||
mov [full_file_name_table.size], 2
|
mov [full_file_name_table.size], 2
|
||||||
; block the ability to call f.30.3 because for one session is necessary
|
; block the ability to call f.30.3 because for one session is necessary
|
||||||
; for us only once
|
; for us only once
|
||||||
@ -786,7 +799,7 @@ sys_current_directory:
|
|||||||
popfd
|
popfd
|
||||||
@@:
|
@@:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.get:
|
.get:
|
||||||
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
|
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
|
||||||
; for our code: ebx->buffer,ecx=len
|
; for our code: ebx->buffer,ecx=len
|
||||||
|
Loading…
Reference in New Issue
Block a user