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:
Sergey Semyonov (Serge) 2016-03-13 10:30:38 +00:00
parent 8bb7273e0f
commit 22e9386a23
2 changed files with 32 additions and 7 deletions

View File

@ -870,23 +870,35 @@ common_app_entry:
.copy_full_path:
mov esi, [current_slot]
mov esi, [esi+APPDATA.cur_dir]
mov ebx, 1023
mov al, '/'
stosb
@@:
.copy_path:
dec ebx
jz .finish_path
lodsb
stosb
test al, al
jnz @B
jnz .copy_path
mov byte [edi-1], '/'
cmp ecx, ebx
jbe @F
mov ecx, ebx
@@:
lea esi, [ebp+sizeof.APP_HDR]
xor eax, eax
rep movsb
stosb
jmp .check_cmdline
.copy_filename:
.finish_path:
xor eax, eax
stosb
jmp .check_cmdline
.copy_filename:
cmp byte [esi], '/'
jne .copy_full_path

View File

@ -135,6 +135,19 @@ file_system_lfn:
lodsb
@@:
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
jne @F
mov edx, [ebx+4]
@ -734,7 +747,7 @@ process_replace_file_name:
uglobal
lock_flag_for_f30_3 rb 1
endg
sys_current_directory:
; mov esi, [current_slot]
; mov esi, [esi+APPDATA.cur_dir]
@ -759,7 +772,7 @@ sys_current_directory:
; check lock of the function
cmp [lock_flag_for_f30_3], 1
je @f
mov esi, ecx
mov edi, sysdir_name1
; copying fake directory name
@ -778,7 +791,7 @@ sys_current_directory:
; terminator of name, in case if we get the inlet trash
xor eax, eax
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
; block the ability to call f.30.3 because for one session is necessary
; for us only once
@ -786,7 +799,7 @@ sys_current_directory:
popfd
@@:
ret
.get:
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
; for our code: ebx->buffer,ecx=len