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
This commit is contained in:
Alexandre Fournier 2022-12-09 14:37:13 -05:00 committed by Joshua Colp
parent b6855755ce
commit 01b3962201
1 changed files with 2 additions and 2 deletions

View File

@ -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;
}