mirror of
https://github.com/Fishwaldo/opensbi.git
synced 2025-03-16 03:41:24 +00:00
lib: Add error detection for misa_extension
Add assertions for misa_extension to prevent incoming illegal characters. Signed-off-by: Xiang Wang <merle@hardenedlinux.org> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
parent
ab14f94a8c
commit
813f7f4c25
2 changed files with 13 additions and 4 deletions
|
@ -159,8 +159,16 @@ void csr_write_num(int csr_num, unsigned long val);
|
|||
__asm__ __volatile__("wfi" ::: "memory"); \
|
||||
} while (0)
|
||||
|
||||
/* Determine CPU extension, return non-zero support */
|
||||
int misa_extension(char ext);
|
||||
|
||||
/* determine CPU extension, return non-zero support */
|
||||
int misa_extension_imp(char ext);
|
||||
|
||||
#define misa_extension(c)\
|
||||
({\
|
||||
_Static_assert(((c >= 'A') && (c <= 'Z')),\
|
||||
"The parameter of misa_extension must be [A-Z]");\
|
||||
misa_extension_imp(c);\
|
||||
})
|
||||
|
||||
/* Get MXL field of misa, return -1 on error */
|
||||
int misa_xlen(void);
|
||||
|
@ -170,7 +178,7 @@ static inline void misa_string(char *out, unsigned int out_sz)
|
|||
unsigned long i;
|
||||
|
||||
for (i = 0; i < 26; i++) {
|
||||
if (misa_extension('A' + i)) {
|
||||
if (misa_extension_imp('A' + i)) {
|
||||
*out = 'A' + i;
|
||||
out++;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
#include <sbi/sbi_error.h>
|
||||
#include <sbi/sbi_platform.h>
|
||||
|
||||
int misa_extension(char ext)
|
||||
/* determine CPU extension, return non-zero support */
|
||||
int misa_extension_imp(char ext)
|
||||
{
|
||||
unsigned long misa = csr_read(CSR_MISA);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue