У меня проблема с выяснением, что не так с моим кодом ниже. Я запускаю полный код и провожу много входного тестирования, и ошибки обрабатываются так, как я хочу. Я также использую такие вещи, как valgrind, cppchecker для проверки ошибок, которые я исправил. Затем я решил использовать afl-fuzzer для расширенного обнаружения ошибок в моих кодах, а затем я получаю много сбоев из-за строки кода ниже. Тем не менее, большинство сбоев происходит из-за ошибки сегментации. но я не вижу, что не так с кодом. Любая помощь будет оценена. Ниже приведена функция, которая продолжает выдавать ошибку. Что, я думаю, имеет отношение к sscanf
:
Tree* insert(char* command, Tree* tree) {
int age;
char* name = malloc(sizeof(char) * 20);
if (2 != sscanf(command, "i %d %20s", &age, name)){
fprintf(stderr, "Failed to parse insert command: not enough parameters filled\n");
// return NULL;
}
if (tree == NULL){
tree = tree_create();
}
tree_insert(tree, age, name);
return tree;
}
tree_create function
Tree* tree_create(){
Tree *tree = malloc(sizeof(Tree));
tree->root = NULL;
return tree;
}
tree_insert
void tree_insert(Tree* tree, int age, char* name) {
if (tree->root == NULL) {
Node *node = calloc(1, sizeof(Node));
node->name = name;
node->age = age;
node->isRoot = true;
node->right = NULL;
node->left = NULL;
tree->root = node;
} else {
node_insert(tree->root, age, name, 1);
}
}