[SUCI] Handling exceptions for invalid RI (#1570)
If Routing Indicator is wrong, we forcely set to '0'.
This commit is contained in:
parent
9d94b33c7b
commit
b98c2c13f6
|
@ -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);
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue