Use const on all read-only buffers
diff --git a/arch/AArch64/AArch64Disassembler.c b/arch/AArch64/AArch64Disassembler.c
index 7a57201..4b5eb70 100644
--- a/arch/AArch64/AArch64Disassembler.c
+++ b/arch/AArch64/AArch64Disassembler.c
@@ -281,7 +281,7 @@
static DecodeStatus _getInstruction(MCInst *MI,
- unsigned char *code, size_t code_len,
+ const uint8_t *code, size_t code_len,
uint16_t *Size,
uint64_t Address, MCRegisterInfo *MRI)
{
diff --git a/arch/AArch64/AArch64Disassembler.h b/arch/AArch64/AArch64Disassembler.h
index 26e2279..65853f4 100644
--- a/arch/AArch64/AArch64Disassembler.h
+++ b/arch/AArch64/AArch64Disassembler.h
@@ -12,7 +12,7 @@
void AArch64_init(MCRegisterInfo *MRI);
-bool AArch64_getInstruction(csh ud, unsigned char *code, size_t code_len,
+bool AArch64_getInstruction(csh ud, const uint8_t *code, size_t code_len,
MCInst *instr, uint16_t *size, uint64_t address, void *info);
#endif
diff --git a/arch/AArch64/AArch64InstPrinter.c b/arch/AArch64/AArch64InstPrinter.c
index 0c7c9fd..d58df4f 100644
--- a/arch/AArch64/AArch64InstPrinter.c
+++ b/arch/AArch64/AArch64InstPrinter.c
@@ -657,7 +657,7 @@
#define PRINT_ALIAS_INSTR
#include "AArch64GenAsmWriter.inc"
-void AArch64_post_printer(unsigned int insn, cs_insn *pub_insn, char *insn_asm)
+void AArch64_post_printer(unsigned int insn, cs_insn *pub_insn, const char *insn_asm)
{
// check if this insn requests write-back
if (strrchr(insn_asm, '!') != NULL)
diff --git a/arch/AArch64/AArch64InstPrinter.h b/arch/AArch64/AArch64InstPrinter.h
index d70eecd..4ba343c 100644
--- a/arch/AArch64/AArch64InstPrinter.h
+++ b/arch/AArch64/AArch64InstPrinter.h
@@ -23,6 +23,6 @@
void AArch64_printInst(MCInst *MI, SStream *O, void *);
-void AArch64_post_printer(unsigned int insn, cs_insn *pub_insn, char *insn_asm);
+void AArch64_post_printer(unsigned int insn, cs_insn *pub_insn, const char *insn_asm);
#endif
diff --git a/arch/AArch64/mapping.c b/arch/AArch64/mapping.c
index f4a1eb5..682f468 100644
--- a/arch/AArch64/mapping.c
+++ b/arch/AArch64/mapping.c
@@ -436,7 +436,7 @@
{ ARM64_REG_Q31_Q0_Q1_Q2, "q31_q0_q1_q2"},
};
-char *AArch64_reg_name(csh handle, unsigned int reg)
+const char *AArch64_reg_name(csh handle, unsigned int reg)
{
if (reg >= ARM64_REG_MAX)
return NULL;
@@ -3684,7 +3684,7 @@
{ ARM64_INS_NEGS, "negs" },
};
-char *AArch64_insn_name(csh handle, unsigned int id)
+const char *AArch64_insn_name(csh handle, unsigned int id)
{
if (id >= ARM64_INS_MAX)
return NULL;
@@ -3700,7 +3700,7 @@
}
// map instruction name to public instruction ID
-arm64_reg AArch64_map_insn(char *name)
+arm64_reg AArch64_map_insn(const char *name)
{
// NOTE: skip first NULL name in insn_name_maps
int i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
diff --git a/arch/AArch64/mapping.h b/arch/AArch64/mapping.h
index 359a17b..c60c4f0 100644
--- a/arch/AArch64/mapping.h
+++ b/arch/AArch64/mapping.h
@@ -8,7 +8,7 @@
#include "../../include/arm64.h"
// return name of regiser in friendly string
-char *AArch64_reg_name(csh handle, unsigned int reg);
+const char *AArch64_reg_name(csh handle, unsigned int reg);
// given internal insn id, return public instruction info
void AArch64_get_insn_id(cs_insn *insn, unsigned int id);
@@ -16,9 +16,9 @@
// given public insn id, return internal instruction ID
unsigned int AArch64_get_insn_id2(unsigned int id);
-char *AArch64_insn_name(csh handle, unsigned int id);
+const char *AArch64_insn_name(csh handle, unsigned int id);
// map instruction name to public instruction ID
-arm64_reg AArch64_map_insn(char *name);
+arm64_reg AArch64_map_insn(const char *name);
#endif
diff --git a/arch/ARM/ARMDisassembler.c b/arch/ARM/ARMDisassembler.c
index 9a719e1..dd6ecd6 100644
--- a/arch/ARM/ARMDisassembler.c
+++ b/arch/ARM/ARMDisassembler.c
@@ -435,7 +435,7 @@
0);
}
-static DecodeStatus _ARM_getInstruction(cs_struct *ud, MCInst *MI, unsigned char *code, size_t code_len,
+static DecodeStatus _ARM_getInstruction(cs_struct *ud, MCInst *MI, const uint8_t *code, size_t code_len,
uint16_t *Size, uint64_t Address)
{
uint8_t bytes[4];
@@ -656,7 +656,7 @@
}
}
-static DecodeStatus _Thumb_getInstruction(cs_struct *ud, MCInst *MI, unsigned char *code, size_t code_len,
+static DecodeStatus _Thumb_getInstruction(cs_struct *ud, MCInst *MI, const uint8_t *code, size_t code_len,
uint16_t *Size, uint64_t Address)
{
uint8_t bytes[4];
@@ -830,7 +830,7 @@
return MCDisassembler_Fail;
}
-bool Thumb_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
+bool Thumb_getInstruction(csh ud, const uint8_t *code, size_t code_len, MCInst *instr,
uint16_t *size, uint64_t address, void *info)
{
DecodeStatus status = _Thumb_getInstruction((cs_struct *)ud, instr, code, code_len, size, address);
@@ -839,7 +839,7 @@
return status != MCDisassembler_Fail;
}
-bool ARM_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
+bool ARM_getInstruction(csh ud, const uint8_t *code, size_t code_len, MCInst *instr,
uint16_t *size, uint64_t address, void *info)
{
DecodeStatus status = _ARM_getInstruction((cs_struct *)ud, instr, code, code_len, size, address);
diff --git a/arch/ARM/ARMDisassembler.h b/arch/ARM/ARMDisassembler.h
index e4f39b2..585c6a4 100644
--- a/arch/ARM/ARMDisassembler.h
+++ b/arch/ARM/ARMDisassembler.h
@@ -9,9 +9,9 @@
void ARM_init(MCRegisterInfo *MRI);
-bool ARM_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
+bool ARM_getInstruction(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
-bool Thumb_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
+bool Thumb_getInstruction(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
uint64_t ARM_getFeatureBits(int mode);
diff --git a/arch/ARM/ARMInstPrinter.c b/arch/ARM/ARMInstPrinter.c
index e07b421..1771c68 100644
--- a/arch/ARM/ARMInstPrinter.c
+++ b/arch/ARM/ARMInstPrinter.c
@@ -219,7 +219,7 @@
{ ARM_INS_UMULL, "umulls" },
};
-void ARM_post_printer(unsigned int insn, cs_insn *pub_insn, char *insn_asm)
+void ARM_post_printer(unsigned int insn, cs_insn *pub_insn, const char *insn_asm)
{
// check if this insn requests write-back
if (strrchr(insn_asm, '!') != NULL) {
diff --git a/arch/ARM/ARMInstPrinter.h b/arch/ARM/ARMInstPrinter.h
index 16c45ed..6d3adc9 100644
--- a/arch/ARM/ARMInstPrinter.h
+++ b/arch/ARM/ARMInstPrinter.h
@@ -22,6 +22,6 @@
#include "../../SStream.h"
void ARM_printInst(MCInst *MI, SStream *O, void *Info);
-void ARM_post_printer(unsigned int insn, cs_insn *pub_insn, char *mnem);
+void ARM_post_printer(unsigned int insn, cs_insn *pub_insn, const char *mnem);
#endif
diff --git a/arch/ARM/mapping.c b/arch/ARM/mapping.c
index 73a8dd9..67bcf6f 100644
--- a/arch/ARM/mapping.c
+++ b/arch/ARM/mapping.c
@@ -125,7 +125,7 @@
{ ARM_REG_S31, "s31"},
};
-char *ARM_reg_name(csh handle, unsigned int reg)
+const char *ARM_reg_name(csh handle, unsigned int reg)
{
if (reg >= ARM_REG_MAX)
return NULL;
@@ -2763,7 +2763,7 @@
{ ARM_INS_PUSH, "push" },
};
-char *ARM_insn_name(csh handle, unsigned int id)
+const char *ARM_insn_name(csh handle, unsigned int id)
{
if (id >= ARM_INS_MAX)
return NULL;
@@ -2771,7 +2771,7 @@
return insn_name_maps[id].name;
}
-arm_reg ARM_map_insn(char *name)
+arm_reg ARM_map_insn(const char *name)
{
int i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
diff --git a/arch/ARM/mapping.h b/arch/ARM/mapping.h
index 63be9cb..d7b2519 100644
--- a/arch/ARM/mapping.h
+++ b/arch/ARM/mapping.h
@@ -9,7 +9,7 @@
#include "../../utils.h"
// return name of regiser in friendly string
-char *ARM_reg_name(csh handle, unsigned int reg);
+const char *ARM_reg_name(csh handle, unsigned int reg);
// given internal insn id, return public instruction ID
void ARM_get_insn_id(cs_insn *insn, unsigned int id);
@@ -17,10 +17,10 @@
// given public insn id, return internal instruction info
unsigned int ARM_get_insn_id2(unsigned int id);
-char *ARM_insn_name(csh handle, unsigned int id);
+const char *ARM_insn_name(csh handle, unsigned int id);
// map instruction name to instruction ID
-arm_reg ARM_map_insn(char *name);
+arm_reg ARM_map_insn(const char *name);
// check if this insn is relative branch
bool ARM_rel_branch(unsigned int insn_id);
diff --git a/arch/Mips/MipsDisassembler.c b/arch/Mips/MipsDisassembler.c
index 5320ec8..a17e735 100644
--- a/arch/Mips/MipsDisassembler.c
+++ b/arch/Mips/MipsDisassembler.c
@@ -243,7 +243,7 @@
}
static DecodeStatus MipsDisassembler_getInstruction(int mode, MCInst *instr,
- unsigned char *code, size_t code_len,
+ const uint8_t *code, size_t code_len,
uint16_t *Size,
uint64_t Address, bool isBigEndian, MCRegisterInfo *MRI)
{
@@ -278,7 +278,7 @@
return MCDisassembler_Fail;
}
-bool Mips_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
+bool Mips_getInstruction(csh ud, const uint8_t *code, size_t code_len, MCInst *instr,
uint16_t *size, uint64_t address, void *info)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
diff --git a/arch/Mips/MipsDisassembler.h b/arch/Mips/MipsDisassembler.h
index 02b1272..df50d46 100644
--- a/arch/Mips/MipsDisassembler.h
+++ b/arch/Mips/MipsDisassembler.h
@@ -11,10 +11,10 @@
void Mips_init(MCRegisterInfo *MRI);
-bool Mips_getInstruction(csh handle, unsigned char *code, size_t code_len,
+bool Mips_getInstruction(csh handle, const uint8_t *code, size_t code_len,
MCInst *instr, uint16_t *size, uint64_t address, void *info);
-bool Mips64_getInstruction(csh handle, unsigned char *code, size_t code_len,
+bool Mips64_getInstruction(csh handle, const uint8_t *code, size_t code_len,
MCInst *instr, uint16_t *size, uint64_t address, void *info);
#endif
diff --git a/arch/Mips/mapping.c b/arch/Mips/mapping.c
index a226c72..1477773 100644
--- a/arch/Mips/mapping.c
+++ b/arch/Mips/mapping.c
@@ -173,7 +173,7 @@
{ MIPS_REG_W31, "w31"},
};
-char *Mips_reg_name(csh handle, unsigned int reg)
+const char *Mips_reg_name(csh handle, unsigned int reg)
{
if (reg >= MIPS_REG_MAX)
return NULL;
@@ -1917,7 +1917,7 @@
{ MIPS_INS_NEGU, "negu" },
};
-char *Mips_insn_name(csh handle, unsigned int id)
+const char *Mips_insn_name(csh handle, unsigned int id)
{
if (id >= MIPS_INS_MAX)
return NULL;
@@ -1932,7 +1932,7 @@
return insn_name_maps[id].name;
}
-mips_reg Mips_map_insn(char *name)
+mips_reg Mips_map_insn(const char *name)
{
// handle special alias first
int i;
diff --git a/arch/Mips/mapping.h b/arch/Mips/mapping.h
index e4dcfc4..2b64520 100644
--- a/arch/Mips/mapping.h
+++ b/arch/Mips/mapping.h
@@ -8,7 +8,7 @@
#include "../../include/mips.h"
// return name of regiser in friendly string
-char *Mips_reg_name(csh handle, unsigned int reg);
+const char *Mips_reg_name(csh handle, unsigned int reg);
// given internal insn id, return public instruction info
void Mips_get_insn_id(cs_insn *insn, unsigned int id);
@@ -17,10 +17,10 @@
unsigned int Mips_get_insn_id2(unsigned int id);
// given public insn id, return internal insn id
-char *Mips_insn_name(csh handle, unsigned int id);
+const char *Mips_insn_name(csh handle, unsigned int id);
// map instruction name to instruction ID
-mips_reg Mips_map_insn(char *name);
+mips_reg Mips_map_insn(const char *name);
// map internal raw register to 'public' register
mips_reg Mips_map_register(unsigned int r);
diff --git a/arch/X86/X86Disassembler.c b/arch/X86/X86Disassembler.c
index 437cae3..7217411 100644
--- a/arch/X86/X86Disassembler.c
+++ b/arch/X86/X86Disassembler.c
@@ -35,7 +35,7 @@
#include "X86GenInstrInfo.inc"
struct reader_info {
- unsigned char *code;
+ const uint8_t *code;
uint64_t size;
uint64_t offset;
};
@@ -567,7 +567,7 @@
}
// Public interface for the disassembler
-bool X86_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *_info)
+bool X86_getInstruction(csh ud, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *_info)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
InternalInstruction insn;
diff --git a/arch/X86/X86Disassembler.h b/arch/X86/X86Disassembler.h
index 7be16fb..24a8491 100644
--- a/arch/X86/X86Disassembler.h
+++ b/arch/X86/X86Disassembler.h
@@ -95,7 +95,7 @@
#undef INSTRUCTION_SPECIFIER_FIELDS
#undef INSTRUCTION_IDS
-bool X86_getInstruction(csh handle, unsigned char *code, size_t code_len,
+bool X86_getInstruction(csh handle, const uint8_t *code, size_t code_len,
MCInst *instr, uint16_t *size, uint64_t address, void *info);
#endif
diff --git a/arch/X86/mapping.c b/arch/X86/mapping.c
index 4af6ce4..0d55396 100644
--- a/arch/X86/mapping.c
+++ b/arch/X86/mapping.c
@@ -301,7 +301,7 @@
{ X86_REG_R15W, "r15w" },
};
-char *X86_reg_name(csh handle, unsigned int reg)
+const char *X86_reg_name(csh handle, unsigned int reg)
{
cs_struct *ud = (cs_struct *)handle;
@@ -318,7 +318,7 @@
return reg_name_maps[reg].name;
}
-x86_reg x86_map_regname(char *reg)
+x86_reg x86_map_regname(const char *reg)
{
int i = name2id(®_name_maps[1], ARR_SIZE(reg_name_maps) - 1, reg);
@@ -1579,7 +1579,7 @@
{ X86_INS_XTEST, "xtest" },
};
-char *X86_insn_name(csh handle, unsigned int id)
+const char *X86_insn_name(csh handle, unsigned int id)
{
if (id >= X86_INS_MAX)
return NULL;
@@ -1588,7 +1588,7 @@
}
// return insn id, given insn mnemonic
-x86_reg X86_map_insn(char *name)
+x86_reg X86_map_insn(const char *name)
{
int i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
diff --git a/arch/X86/mapping.h b/arch/X86/mapping.h
index 15ca133..de7d6e9 100644
--- a/arch/X86/mapping.h
+++ b/arch/X86/mapping.h
@@ -17,19 +17,19 @@
x86_reg x86_map_segment(int r);
// map register name to x86_reg
-x86_reg x86_map_regname(char *reg);
+x86_reg x86_map_regname(const char *reg);
// return name of regiser in friendly string
-char *X86_reg_name(csh handle, unsigned int reg);
+const char *X86_reg_name(csh handle, unsigned int reg);
// given internal insn id, return public instruction info
void X86_get_insn_id(cs_insn *insn, unsigned int id);
// return insn name, given insn id
-char *X86_insn_name(csh handle, unsigned int id);
+const char *X86_insn_name(csh handle, unsigned int id);
// return insn id, given insn mnemonic
-x86_reg X86_map_insn(char *mnem);
+x86_reg X86_map_insn(const char *mnem);
// given public insn id, return internal insn id
unsigned int X86_get_insn_id2(unsigned int insn_id);
diff --git a/cs.c b/cs.c
index 4504bf2..71ed9d8 100644
--- a/cs.c
+++ b/cs.c
@@ -164,7 +164,7 @@
// fill insn with mnemonic & operands info
static void fill_insn(cs_struct *handle, cs_insn *insn, char *buffer, MCInst *mci,
- PostPrinter_t printer, unsigned char *code)
+ PostPrinter_t printer, const uint8_t *code)
{
memcpy(insn, &mci->pub_insn, sizeof(*insn));
@@ -231,7 +231,7 @@
return CS_ERR_OK;
}
-size_t cs_disasm(csh ud, unsigned char *buffer, size_t size, uint64_t offset, size_t count, cs_insn *insn)
+size_t cs_disasm(csh ud, const uint8_t *buffer, size_t size, uint64_t offset, size_t count, cs_insn *insn)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
MCInst mci;
@@ -281,7 +281,7 @@
// dynamicly allocate memory to contain disasm insn
// NOTE: caller must free() the allocated memory itself to avoid memory leaking
-size_t cs_disasm_dyn(csh ud, unsigned char *buffer, size_t size, uint64_t offset, size_t count, cs_insn **insn)
+size_t cs_disasm_dyn(csh ud, const uint8_t *buffer, size_t size, uint64_t offset, size_t count, cs_insn **insn)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
MCInst mci;
@@ -369,7 +369,7 @@
}
// return friendly name of regiser in a string
-char *cs_reg_name(csh ud, unsigned int reg)
+const char *cs_reg_name(csh ud, unsigned int reg)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
@@ -380,7 +380,7 @@
return handle->reg_name(ud, reg);
}
-char *cs_insn_name(csh ud, unsigned int insn)
+const char *cs_insn_name(csh ud, unsigned int insn)
{
cs_struct *handle = (cs_struct *)(uintptr_t)ud;
diff --git a/cs_priv.h b/cs_priv.h
index b59b734..26e7a81 100644
--- a/cs_priv.h
+++ b/cs_priv.h
@@ -13,11 +13,11 @@
// function to be called after Printer_t
// this is the best time to gather insn's characteristics
-typedef void (*PostPrinter_t)(unsigned int insn, cs_insn *, char *mnem);
+typedef void (*PostPrinter_t)(unsigned int insn, cs_insn *, const char *mnem);
-typedef bool (*Disasm_t)(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
+typedef bool (*Disasm_t)(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
-typedef char *(*GetName_t)(csh handle, unsigned int reg);
+typedef const char *(*GetName_t)(csh handle, unsigned int reg);
typedef void (*GetID_t)(cs_insn *insn, unsigned int id);
diff --git a/include/capstone.h b/include/capstone.h
index 7787406..e51e097 100644
--- a/include/capstone.h
+++ b/include/capstone.h
@@ -71,7 +71,7 @@
// Size of this instruction
uint16_t size;
// Machine bytes of this instruction, with number of bytes indicated by @size above
- unsigned char bytes[16];
+ uint8_t bytes[16];
// Ascii text of instruction mnemonic
char mnemonic[32];
@@ -189,7 +189,7 @@
On failure, call cs_errno() for error code.
*/
size_t cs_disasm(csh handle,
- unsigned char *code, size_t code_size,
+ const uint8_t *code, size_t code_size,
uint64_t address,
size_t count,
cs_insn *insn);
@@ -216,7 +216,7 @@
On failure, call cs_errno() for error code.
*/
size_t cs_disasm_dyn(csh handle,
- unsigned char *code, size_t code_size,
+ const uint8_t *code, size_t code_size,
uint64_t address,
size_t count,
cs_insn **insn);
@@ -236,7 +236,7 @@
@reg: register id
@return: string name of the register, or NULL if @reg_id is invalid.
*/
-char *cs_reg_name(csh handle, unsigned int reg_id);
+const char *cs_reg_name(csh handle, unsigned int reg_id);
/*
Return friendly name of an instruction in a string
@@ -247,7 +247,7 @@
@return: string name of the instruction, or NULL if @insn_id is invalid.
*/
-char *cs_insn_name(csh handle, unsigned int insn_id);
+const char *cs_insn_name(csh handle, unsigned int insn_id);
/*
Check if a disassembled instruction belong to a particular group.
diff --git a/utils.c b/utils.c
index 539ab14..3909970 100644
--- a/utils.c
+++ b/utils.c
@@ -39,7 +39,7 @@
return -1;
}
-int name2id(name_map* map, int max, char *name)
+int name2id(name_map* map, int max, const char *name)
{
int i;
diff --git a/utils.h b/utils.h
index 92df065..2011d77 100644
--- a/utils.h
+++ b/utils.h
@@ -38,7 +38,7 @@
// map a name to its ID
// return 0 if not found
-int name2id(name_map* map, int max, char *name);
+int name2id(name_map* map, int max, const char *name);
// reverse mapid to id
// return 0 if not found