laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-remsim/+/28028 )


Change subject: server: Fix various error paths if startup fails
......................................................................

server: Fix various error paths if startup fails

Don't segfault or use heap after free if osmo-remsim-server cannot
fully initialize, e.g. due to ports already in use.

Change-Id: I558e6a0ea089a779f916aa5576341d1c55da1271
---
M src/server/remsim_server.c
M src/server/rest_api.c
M src/server/rspro_server.c
3 files changed, 7 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/28/28028/1

diff --git a/src/server/remsim_server.c b/src/server/remsim_server.c
index a2c1a8c..9c46aa1 100644
--- a/src/server/remsim_server.c
+++ b/src/server/remsim_server.c
@@ -139,7 +139,6 @@
        close(g_event_ofd.fd);
 out_rps:
        talloc_free(g_rps->slotmaps);
-       talloc_free(g_rps);
 out_rspro:
        rspro_server_destroy(g_rps);

diff --git a/src/server/rest_api.c b/src/server/rest_api.c
index 540fbd4..d3279c4 100644
--- a/src/server/rest_api.c
+++ b/src/server/rest_api.c
@@ -512,6 +512,7 @@

        if (ulfius_start_framework(&g_instance) != U_OK) {
                LOGP(DREST, LOGL_FATAL, "Cannot start REST API on port %u\n", 
port);
+               ulfius_clean_instance(&g_instance);
                return -1;
        }
        return 0;
diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c
index b753993..4ff4714 100644
--- a/src/server/rspro_server.c
+++ b/src/server/rspro_server.c
@@ -854,6 +854,11 @@
        pthread_rwlock_unlock(&srv->rwlock);

        srv->link = ipa_server_link_create(ctx, NULL, host, port, accept_cb, 
srv);
+       if (!srv->link) {
+               talloc_free(srv);
+               return NULL;
+       }
+
        ipa_server_link_open(srv->link);

        return srv;
@@ -865,5 +870,6 @@

        ipa_server_link_destroy(srv->link);
        srv->link = NULL;
+       pthread_rwlock_destroy(&srv->rwlock);
        talloc_free(srv);
 }

--
To view, visit https://gerrit.osmocom.org/c/osmo-remsim/+/28028
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-remsim
Gerrit-Branch: master
Gerrit-Change-Id: I558e6a0ea089a779f916aa5576341d1c55da1271
Gerrit-Change-Number: 28028
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <[email protected]>
Gerrit-MessageType: newchange

Reply via email to