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: .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

View File

@ -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