|  | @@ -136,7 +136,7 @@ char* http_server_get_header(char *request, char *header_name, int *len) {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	return NULL;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -char* http_server_search_header(char *request, char *header_name, int *len, char * parm_name, int parm_name_max_len, char ** next_position ) {
 | 
	
		
			
				|  |  | +char* http_server_search_header(char *request, char *header_name, int *len, char * parm_name, int parm_name_max_len, char ** next_position, char * bufEnd) {
 | 
	
		
			
				|  |  |  	*len = 0;
 | 
	
		
			
				|  |  |  	char *ret = NULL;
 | 
	
		
			
				|  |  |  	char *ptr = NULL;
 | 
	
	
		
			
				|  | @@ -146,13 +146,13 @@ char* http_server_search_header(char *request, char *header_name, int *len, char
 | 
	
		
			
				|  |  |  	ptr = strstr(request, header_name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if (ptr!=NULL) {
 | 
	
		
			
				|  |  | +	if (ptr!=NULL && ptr<bufEnd) {
 | 
	
		
			
				|  |  |  		ret = ptr + strlen(header_name);
 | 
	
		
			
				|  |  |  		ptr = ret;
 | 
	
		
			
				|  |  |  		currentLength=(int)(ptr-request);
 | 
	
		
			
				|  |  |  		ESP_LOGD(TAG, "found string at %d", currentLength);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		while (*ptr != '\0' && *ptr != '\n' && *ptr != '\r' && *ptr != ':' ) {
 | 
	
		
			
				|  |  | +		while (*ptr != '\0' && *ptr != '\n' && *ptr != '\r' && *ptr != ':' && ptr<bufEnd) {
 | 
	
		
			
				|  |  |  			ptr++;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		if(*ptr==':'){
 | 
	
	
		
			
				|  | @@ -162,13 +162,13 @@ char* http_server_search_header(char *request, char *header_name, int *len, char
 | 
	
		
			
				|  |  |  			strncpy(parm_name,ret,(currentLength>parm_name_max_len?parm_name_max_len:currentLength));
 | 
	
		
			
				|  |  |  			ESP_LOGD(TAG, "Found parameter name : %s ", parm_name);
 | 
	
		
			
				|  |  |  			ptr++;
 | 
	
		
			
				|  |  | -			while (*ptr == ' ' ) {
 | 
	
		
			
				|  |  | +			while (*ptr == ' ' && ptr<bufEnd) {
 | 
	
		
			
				|  |  |  				ptr++;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		ret=ptr;
 | 
	
		
			
				|  |  | -		while (*ptr != '\0' && *ptr != '\n' && *ptr != '\r') {
 | 
	
		
			
				|  |  | +		while (*ptr != '\0' && *ptr != '\n' && *ptr != '\r'&& ptr<bufEnd) {
 | 
	
		
			
				|  |  |  			(*len)++;
 | 
	
		
			
				|  |  |  			ptr++;
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -344,7 +344,7 @@ void http_server_netconn_serve(struct netconn *conn) {
 | 
	
		
			
				|  |  |  						// Search will return
 | 
	
		
			
				|  |  |  						ESP_LOGI(TAG, "Getting parameters from X-Custom headers");
 | 
	
		
			
				|  |  |  						memset(last_parm_name,0x00,sizeof(last_parm_name));
 | 
	
		
			
				|  |  | -						last_parm = http_server_search_header(next_parm, "X-Custom-", &lenA, last_parm_name, sizeof(last_parm_name)-1,&next_parm);
 | 
	
		
			
				|  |  | +						last_parm = http_server_search_header(next_parm, "X-Custom-", &lenA, last_parm_name, sizeof(last_parm_name)-1,&next_parm,buf+buflen);
 | 
	
		
			
				|  |  |  						if(last_parm!=NULL){
 | 
	
		
			
				|  |  |  							ESP_LOGI(TAG, "http_server_netconn_serve: config.json/ call, found parameter %s=%s, length %i", last_parm_name, last_parm, lenA);
 | 
	
		
			
				|  |  |  							if(strcmp(last_parm_name, "fwurl")==0){
 |