Сразу после malloc
есть выход за пределы.
Здесь вы получаете доступ за пределами:
lower_case[length + 1] = '\0';
Это должно быть:
lower_case[length] = '\0';
Также целесообразно проверить, не удалось ли malloc
Тоже!
Как отмечалось в комментариях, есть также случай, когда может произойти утечка памяти при возврате изнутри l oop. Вам нужно освободить там:
if (strcmp(trav->word, lower_case) == 0)
{
free(lower_case);
return true;
}