Apps/dbgboard: fix critical bug with stack overflow
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 7m0s

This commit is contained in:
rgimad
2025-03-16 21:48:13 +03:00
committed by rgimad
parent e353771faa
commit 78de535233

View File

@@ -2,7 +2,6 @@
; DBGBOARD - a console-based debug board ; DBGBOARD - a console-based debug board
; Copyright (C) 2025 KolibriOS team ; Copyright (C) 2025 KolibriOS team
format binary as "" format binary as ""
use32 use32
org 0 org 0
@@ -55,6 +54,7 @@ struct RING_BUFFER
pos dd ? pos dd ?
bytes_filled dd ? bytes_filled dd ?
ends ends
assert sizeof.RING_BUFFER = 16 ; for BSF
proc set_text_color stdcall uses eax ecx edx, _color proc set_text_color stdcall uses eax ecx edx, _color
and [_color], 0x0F and [_color], 0x0F
@@ -154,7 +154,7 @@ proc print_ring_buffer stdcall uses eax ebx ecx edx esi, _rb
add eax, edx add eax, edx
mov eax, [eax] mov eax, [eax]
mov byte [chr], al mov byte [chr], al
stdcall print_next_char, chr stdcall print_next_char
inc ecx inc ecx
.endw .endw
ret ret
@@ -231,7 +231,7 @@ proc print_next_char uses ebx
stdcall set_text_color, TEXT_COLOR_LIGHTGRAY stdcall set_text_color, TEXT_COLOR_LIGHTGRAY
mov [is_kernel_printing], 0 mov [is_kernel_printing], 0
.endif .endif
.if [is_kernel_printing] .if [is_kernel_printing] = 1
.if [current_mode] = MODE_KERNEL | [current_mode] = MODE_BOTH .if [current_mode] = MODE_KERNEL | [current_mode] = MODE_BOTH
invoke con_write_asciiz, prefix invoke con_write_asciiz, prefix
.endif .endif
@@ -248,7 +248,7 @@ proc print_next_char uses ebx
inc [prefix_index] inc [prefix_index]
.endif .endif
.else .else
.if [is_kernel_printing] .if [is_kernel_printing] = 1
.if [current_mode] = MODE_KERNEL | [current_mode] = MODE_BOTH .if [current_mode] = MODE_KERNEL | [current_mode] = MODE_BOTH
invoke con_write_asciiz, chr invoke con_write_asciiz, chr
.endif .endif
@@ -317,7 +317,7 @@ start:
xor eax, eax xor eax, eax
.endif .endif
mov [current_mode], eax mov [current_mode], eax
shl eax, BSF sizeof.RING_BUFFER ; assert on sizeof, must be power of two shl eax, BSF sizeof.RING_BUFFER
add eax, rb_base add eax, rb_base
mov [current_rb], eax mov [current_rb], eax
mov eax, [current_mode] mov eax, [current_mode]
@@ -331,7 +331,7 @@ start:
mov dword [prefix], 0 mov dword [prefix], 0
mov [prefix_index], 0 mov [prefix_index], 0
mov [is_start_line], 1 mov [is_start_line], 1
mov [is_kernel_printing], 0 ;; mov [is_kernel_printing], 0
stdcall print_ring_buffer, [current_rb] stdcall print_ring_buffer, [current_rb]
.endif .endif
.endif .endif