Se ti serve forzatamente unsigned char, una volta convertito in const char *, utilizzi memcpy()...

memcpy(up, p, strlen(p) + 1);

p.s. +1 perchè cosi si porta dietro anche il carattere per nul terminare la stringa.