diff --git a/mongoose.c b/mongoose.c index 8bf19b9053b1ed10d5577473aff9e67762990ab9..94f1e50ec2c24a08591a1aa6657880651a5edf79 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4547,7 +4547,7 @@ static int set_ports_option(struct mg_context *ctx) { int off = 0; #endif struct vec vec; - struct socket so; + struct socket so, *ptr; while (success && (list = next_option(list, &vec, NULL)) != NULL) { if (!parse_port_string(&vec, &so)) { @@ -4573,15 +4573,15 @@ static int set_ports_option(struct mg_context *ctx) { (int) vec.len, vec.ptr, strerror(ERRNO)); closesocket(so.sock); success = 0; + } else if ((ptr = realloc(ctx->listening_sockets, + (ctx->num_listening_sockets + 1) * + sizeof(ctx->listening_sockets[0]))) == NULL) { + success = 0; } else { set_close_on_exec(so.sock); - ctx->listening_sockets = realloc2(ctx->listening_sockets, - (ctx->num_listening_sockets + 1) * - sizeof(ctx->listening_sockets[0])); - if (ctx->listening_sockets != NULL) { - ctx->listening_sockets[ctx->num_listening_sockets] = so; - ctx->num_listening_sockets++; - } + ctx->listening_sockets = ptr; + ctx->listening_sockets[ctx->num_listening_sockets] = so; + ctx->num_listening_sockets++; } }