I am confused. Is testUpdate(p_path)
supposed to call a C function? It looks like it recursively calls the python code (with the wrong parameter type). Try to rename the Python function.
BTW, Your C code is faulty. I suppose what you want is
char * testUpdate(const char * softwareToolsPath) {
char * p;
p = softwareToolsPath;
return p;
}