Ciao! Se non sbaglio l'errore dovrebbe accadere quando trovi un numero pari, ovvero quando esegui questa porzione di codice:
if((cur -> info % 2) == 0){
aux = cur;
free(cur -> next);
cur = aux -> next;
}
In pratica con la free cancelli l'elemento successivo, ma prima di fare ciò non modifichi il campo "cur->next" con il valore appropriato (ovvero cur->next->next, ipotizzando che cur->next non sia NULL). Senza questo passaggio intermedio quando poi vai a fare "cur = aux->next" ti ritrovi che cur punta all'elemento che hai appena cancellato!
Inoltre, per quanto riguarda l'else potresti fare direttamente "cur = cur->next", eliminando la prima riga che, di fatto, è inutile!