git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix bugs found in brk & add simple security checks on lx_free
[lunaix-os.git]
/
lunaix-os
/
kernel
/
k_main.c
diff --git
a/lunaix-os/kernel/k_main.c
b/lunaix-os/kernel/k_main.c
index 3899336d00950bd5d150611c18ecc2c0726f11ff..565e5bc0b545af3c355d6eeec6d6ab692a1c042c 100644
(file)
--- a/
lunaix-os/kernel/k_main.c
+++ b/
lunaix-os/kernel/k_main.c
@@
-1,8
+1,9
@@
#include <stdint.h>
#include <lunaix/mm/vmm.h>
#include <stdint.h>
#include <lunaix/mm/vmm.h>
-#include <lunaix/mm/
dmm
.h>
+#include <lunaix/mm/
kalloc
.h>
#include <hal/cpu.h>
#include <libc/stdio.h>
#include <hal/cpu.h>
#include <libc/stdio.h>
+#include <lunaix/spike.h>
extern uint8_t __kernel_start;
extern uint8_t __kernel_start;
@@
-20,22
+21,33
@@
_kernel_main()
void* k_start = vmm_v2p(&__kernel_start);
printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
void* k_start = vmm_v2p(&__kernel_start);
printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
- dmm_init();
-
// test malloc & free
// test malloc & free
- uint32_t** arr = (uint32_t**)
lx_
malloc(10 * sizeof(uint32_t*));
+ uint32_t** arr = (uint32_t**)
k
malloc(10 * sizeof(uint32_t*));
for (size_t i = 0; i < 10; i++)
{
for (size_t i = 0; i < 10; i++)
{
- arr[i] = (uint32_t*)
lx_
malloc((i + 1) * 2);
+ arr[i] = (uint32_t*)
k
malloc((i + 1) * 2);
}
}
+
for (size_t i = 0; i < 10; i++)
{
for (size_t i = 0; i < 10; i++)
{
-
lx_
free(arr[i]);
+
k
free(arr[i]);
}
}
+
+ void* big_ = kmalloc(8192);
- lx_free(arr);
- // assert(0);
+ // good free
+ kfree(arr);
+ kfree(big_);
+
+ uint8_t* bad1 = kmalloc(123);
+ void* bad2 = kmalloc(1);
+
+ *((uint32_t*)(bad1 - 4)) = 0xc2343312UL;
+
+ // bad free
+ kfree(bad1);
+ kfree(bad2 - 2);
}
\ No newline at end of file
}
\ No newline at end of file