Fix case where mixed default/non-default listener config could crash.

This effects only very unusual configs, and would cause a crash on
startup. It is not a security concern.

Fixes oss-fuzz #55886.
pull/2756/head
Roger A. Light 3 years ago
parent be688e883b
commit 1df253e4e3

@ -144,7 +144,16 @@ static int config__check_bridges(struct mosquitto__config *config);
static int config__add_listener(struct mosquitto__config *config)
{
struct mosquitto__listener *listener;
int def_listener = -1;
if(config->default_listener){
for(int i=0; i<config->listener_count; i++){
if(&config->listeners[i] == config->default_listener){
def_listener = i;
break;
}
}
}
config->listener_count++;
config->listeners = mosquitto__realloc(config->listeners, sizeof(struct mosquitto__listener)*(size_t)config->listener_count);
if(!config->listeners){
@ -158,6 +167,9 @@ static int config__add_listener(struct mosquitto__config *config)
log__printf(NULL, MOSQ_LOG_ERR, "Error: Out of memory.");
return MOSQ_ERR_NOMEM;
}
if(def_listener != -1){
config->default_listener = &config->listeners[def_listener];
}
return MOSQ_ERR_SUCCESS;
}

Loading…
Cancel
Save