Longest Palindrome Sub String | Brute Force Method

#include <iostream>
#include <cstring>
using namespace std;
 
// brute force the entire thing.
 
char* getSubstring(char c[], int starting, int ending){
 
    int length = ending - starting + 1;
    int temp = length;
 
    if(length > strlen(c)){
        return "null";
    }
 
    char* str = new char[length + 1];
 
    char *p1 = str;
    char *p2 = &c[starting];
 
    while(temp--){
        *(p1++) = *(p2++);
    }
 
    *p1 = '\0';
 
    return str;
 
}
 
char* getReverseString(char c[]){
 
    int length = strlen(c);
    int temp = length;
 
    char* str = new char[length];
 
    char* p1 = str;
    char* p2 = &c[strlen(c) - 1];
 
    while(temp--){
        *(p1++) = *(p2--);
    }
 
    *p1 = '\0';
 
    return str;
 
}
 
int main(){
 
    char* str = "jklollolkidding";
 
    cout << getSubstring(str, 2, 6) << endl;
 
    char* palindromeString = new char[strlen(str)];
    int palindromeLength = 0;
 
    for(int i = 0; i < strlen(str); i++){
 
        for(int j = 0; j < strlen(str); j++){
 
            char* subStr = getSubstring(str, i, j);
 
            if(strcmp(subStr, "null")){
 
                char* revSubStr = getReverseString(subStr);
 
                if(!strcmp(subStr, revSubStr)){
 
                    if(strlen(subStr) > palindromeLength){
 
                        palindromeString = subStr;
                        palindromeLength = strlen(subStr);
 
                    }
 
                }
 
            }
 
        }
 
    }
 
    cout << palindromeString << endl;
 
return 0; }