is there a segmentation fault
Dependency *make_dependency(char *target, Rule *head) {
    Rule *rule = find_rule(target, head);

    if (rule == NULL) {
        Rule *new_rule = malloc(sizeof(Rule));
        strcpy(new_rule->target, target);
        new_rule->next_rule = NULL;
        add_rule(head, new_rule);
        rule = new_rule;
    }

    Dependency *new_dep = malloc(sizeof(Dependency));

    new_dep->rule = rule;
    new_dep->next_dep = NULL;

    return new_dep;
}