[SUCI] Handling exceptions for invalid RI (#1570)

If Routing Indicator is wrong, we forcely set to '0'.
This commit is contained in:
Sukchan Lee 2022-06-10 23:19:00 +09:00
parent 9d94b33c7b
commit b98c2c13f6
4 changed files with 29 additions and 23 deletions

View File

@ -198,7 +198,6 @@ char *ogs_supi_from_suci(char *suci)
{
#define MAX_SUCI_TOKEN 16
char *array[MAX_SUCI_TOKEN];
char *saveptr = NULL;
char *p, *tmp;
int i;
char *supi = NULL;
@ -207,13 +206,9 @@ char *ogs_supi_from_suci(char *suci)
tmp = ogs_strdup(suci);
ogs_expect_or_return_val(tmp, NULL);
p = strtok_r(tmp, "-", &saveptr);
memset(array, 0, sizeof(array));
for (i = 0; i < MAX_SUCI_TOKEN && p; i++) {
array[i] = p;
p = strtok_r(NULL, "-", &saveptr);
}
p = tmp;
i = 0;
while((array[i++] = strsep(&p, "-")));
SWITCH(array[0])
CASE("suci")
@ -240,17 +235,17 @@ char *ogs_supi_from_suci(char *suci)
char *ogs_id_get_type(char *str)
{
char *saveptr = NULL;
char *p, *tmp;
char *token, *p, *tmp;
char *type = NULL;
ogs_assert(str);
tmp = ogs_strdup(str);
ogs_expect_or_return_val(tmp, NULL);
p = strtok_r(tmp, "-", &saveptr);
ogs_assert(p);
type = ogs_strdup(p);
p = tmp;
token = strsep(&p, "-");
ogs_assert(token);
type = ogs_strdup(token);
ogs_expect_or_return_val(type, NULL);
ogs_free(tmp);
@ -259,19 +254,19 @@ char *ogs_id_get_type(char *str)
char *ogs_id_get_value(char *str)
{
char *saveptr = NULL;
char *p, *tmp;
char *token, *p, *tmp;
char *ueid = NULL;
ogs_assert(str);
tmp = ogs_strdup(str);
ogs_expect_or_return_val(tmp, NULL);
p = strtok_r(tmp, "-", &saveptr);
ogs_assert(p);
p = strtok_r(NULL, "-", &saveptr);
ogs_assert(p);
ueid = ogs_strdup(p);
p = tmp;
token = strsep(&p, "-");
ogs_assert(token);
token = strsep(&p, "-");
ogs_assert(token);
ueid = ogs_strdup(token);
ogs_expect_or_return_val(ueid, NULL);
ogs_free(tmp);

View File

@ -60,9 +60,9 @@ static char *masked_db_uri(const char *db_uri)
ogs_assert(tmp);
memset(array, 0, sizeof(array));
array[0] = strtok_r(tmp, "@", &saveptr);
array[0] = ogs_strtok_r(tmp, "@", &saveptr);
if (array[0])
array[1] = strtok_r(NULL, "@", &saveptr);
array[1] = ogs_strtok_r(NULL, "@", &saveptr);
if (array[1]) {
masked = ogs_msprintf("mongodb://*****:*****@%s", array[1]);

View File

@ -105,6 +105,17 @@ char *ogs_nas_5gs_suci_from_mobile_identity(
}
}
if (routing_indicator[0] == 0 && routing_indicator[1] == 0 &&
routing_indicator[2] == 0 && routing_indicator[3] == 0) {
ogs_error("Unknown Routing Indicator: [%x,%x,%x,%x]",
mobile_identity_suci->routing_indicator1,
mobile_identity_suci->routing_indicator2,
mobile_identity_suci->routing_indicator3,
mobile_identity_suci->routing_indicator4);
routing_indicator[0] = '0';
}
scheme_output_len = mobile_identity->length - 8;
ogs_expect_or_return_val(scheme_output_len > 0, NULL);
ogs_expect_or_return_val(

View File

@ -146,7 +146,7 @@ char *ogs_sbi_parse_uri(char *uri, const char *delim, char **saveptr)
{
char *item = NULL;
item = url_decode(strtok_r(uri, delim, saveptr));
item = url_decode(ogs_strtok_r(uri, delim, saveptr));
if (!item) {
return NULL;
}