From: Alexandre Fournier Date: Fri, 9 Dec 2022 19:37:13 +0000 (-0500) Subject: res_geoloc: fix NULL pointer dereference bug X-Git-Tag: 19.8.0-rc1~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c900a7dc398f6ba28e3c7e8e40222c63566acdc7;p=thirdparty%2Fasterisk.git res_geoloc: fix NULL pointer dereference bug The `ast_geoloc_datastore_add_eprofile` function does not return 0 on success, it returns the size of the underlying datastore. This means that the datastore will be freed and its pointer set to NULL when no error occured at all. ASTERISK-30346 Change-Id: Iea9b209bd1244cc57b903b9496cb680c356e4bb9 --- diff --git a/res/res_geolocation/geoloc_datastore.c b/res/res_geolocation/geoloc_datastore.c index 040a9bdcdb..4e7a85e8f1 100644 --- a/res/res_geolocation/geoloc_datastore.c +++ b/res/res_geolocation/geoloc_datastore.c @@ -255,7 +255,7 @@ struct ast_datastore *ast_geoloc_datastore_create_from_eprofile( } rc = ast_geoloc_datastore_add_eprofile(ds, eprofile); - if (rc != 0) { + if (rc <= 0) { ast_datastore_free(ds); ds = NULL; } @@ -297,7 +297,7 @@ struct ast_datastore *ast_geoloc_datastore_create_from_profile_name(const char * rc = ast_geoloc_datastore_add_eprofile(ds, eprofile); ao2_ref(eprofile, -1); - if (rc != 0) { + if (rc <= 0) { ast_datastore_free(ds); ds = NULL; }