Closed
Description
The Problem
We can see that the M680X includes calls to fprintf(stderr, "..")
:
$ grep -rn fprintf arch/ *.c *.h windows*
Binary file arch/M680X/M680XDisassembler.o matches
arch/M680X/M680XInstPrinter.c:339: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XInstPrinter.c:346: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XInstPrinter.c:353: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:935: fprintf(stderr, "Internal error: Unexpected instruction "
arch/M680X/M680XDisassembler.c:1117: fprintf(stderr, "Internal error: Unexpected operand0 register "
arch/M680X/M680XDisassembler.c:1563: fprintf(stderr, "Internal error: Unexpected immediate byte "
arch/M680X/M680XDisassembler.c:1769: fprintf(stderr, "Internal error: Unexpected post byte "
arch/M680X/M680XDisassembler.c:2148: fprintf(stderr, "M680X_CPU_TYPE_%s is not suppported\n",
arch/M680X/M680XDisassembler.c:2227: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2234: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2241: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2248: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2255: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2262: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2269: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2276: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2283: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2290: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2297: fprintf(stderr, "Internal error: Size mismatch in enum "
arch/M680X/M680XDisassembler.c:2304: fprintf(stderr, "Internal error: Size mismatch in enum "
This would not work in code such as kernel code that do not support
$ nm libcapstone.so.5 | grep ' U' | awk '{ print $2 }' | sed 's/@@.*//' | sort -u
abort
__assert_fail
calloc
__fprintf_chk
free
malloc
memcpy
memmove
realloc
__sprintf_chk
__stack_chk_fail
stderr
strchr
strcmp
strcpy
__strcpy_chk
strlen
strncmp
strncpy
strrchr
strstr
strtol
vsnprintf
Potential solutions
- Remove
fprintf
lines- simplest option
- Add
cs_err
variant; add handling incs_strerror()
- Replace with other logging alternative
- Allow user to define a logging callback in
csh
with something likecs_set_log_callback
; definecs_log_t
- Allow user to define a logging callback in
Metadata
Metadata
Assignees
Labels
No labels