allora... iniziamo dal risultato.

L'array di risultati che ritorni come fai a sapere che sarà grande MAX_ENTIRES?
Conterrà sicuramente meno risultati di MAX_ENTIRES, quindi:

1) o fai 2 cicli for in cui nel primo ti calcoli solo il numero di risultati e usi quello per la malloc successiva
2) o fai 1 ciclo for e usi realloc
3) o ritorni una lista concatenata
4) o ritorni un array di MAX_ENTIRES e tramite un puntatore tra i parametri ritorni quante posizioni hai riempito,
ma è proprio bruttino.

P.S. anche per i punti (1) e (2) dovrai comunque ritornare la lunghezza dell'array tramite un puntatore nei
parametri, altrimenti il chiamante la funzione non può sapere quanto è lungo l'array