Presumo tu lavori con Linux e gcc ...
Non ho capito bene quando scrivi
hostQuery[i+1] = "0x0"
se intendi che il puntatore restituito dalla malloc e' zero, anche perche' dici che l'errore lo hai sulla malloc stessa e quindi non e' possibile sapere quanto vale il puntatore.
Secondo me il problema lo hai sulla istruzione seguente, la strcpy, e questo perche' nell'allocazione della memoria non hai previsto lo spazio per il terminatore. Dovresti modificare la malloc in questo modo
hostQuery[i+1] = (char *)malloc(sizeof(char)*(strlen(p3)+1));
per non avere problemi con la strcpy che segue