Well, COVERITY is correct. The reason your current approach will fail is because the instance of std::string you created inside the function will only be valid for as long as that function is running. Once your program leaves the function's scope, std::string's destructor will be called and that will be the end of your string.
But if what you want is a C-string, how about...
const char * returnCharPtr()
{
    std::string someString;
    // some processing!.
    char * new_string = new char[someString.length() + 1];
    std::strcpy(new:string, someString.c_str());
    return new_string;
}
But wait... that's almost exactly as returning a std::string, isn't it?
std::string returnCharPtr()
{
    std::string someString;
    // some processing!.
    return new_string;
}
This will copy your string to a new one outside of the function's scope. It works, but it does create a new copy of the string.
Thanks to Return Value Optimization, this won't create a copy (thanks for all corrections!).
So, another option is to pass the parameter as an argument, so you process your string in a function but don't create a new copy. :
void returnCharPtr(std::string & someString)
{
    // some processing!.
}
Or, again, if you want C-Strings, you need to watch out for the length of your string:
void returnCharPtr(char*& someString, int n) // a reference to pointer, params by ref
{
    // some processing!.
}
     
    
std::stringwas invented to start with. Almost anything you invent will nearly inevitably be either 1) a duplicate of whatstd::stringalready does, or 2) broken.const char*far more valid. Do you have a good justification for removing the [C] tag?char*managed in the C code? If not, why tag your post with [C]?