Projects
osmocom:master
open5gs
Log In
Username
Password
File not found: rtl-sdr_2.0.2.202409192026.dsc
×
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 676
View file
commit_59391d8d5ce23835456d4cebbd23c52a18d8a276.txt
Added
View file
commit_da27d6eab9cdaa42f18aa7774da55225cadeea5b.txt
Deleted
View file
open5gs_2.7.6.4747.da27.dsc -> open5gs_2.7.6.4751.5939.dsc
Changed
@@ -2,7 +2,7 @@ Source: open5gs Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-sepp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg Architecture: any -Version: 2.7.6.4747.da27 +Version: 2.7.6.4751.5939 Maintainer: Harald Welte <laforge@gnumonks.org> Uploaders: Sukchan Lee <acetcom@gmail.com> Homepage: https://open5gs.org @@ -32,8 +32,8 @@ open5gs-udr deb net optional arch=any open5gs-upf deb net optional arch=any Checksums-Sha1: - 06b71e6239fb0211ae55acb8c45691defdadf59a 15036356 open5gs_2.7.6.4747.da27.tar.xz + ccf47ce30cd8826737acaf0cca8e43b85d2e768b 15038444 open5gs_2.7.6.4751.5939.tar.xz Checksums-Sha256: - ac95444eeccbda4a4cd37acd72bb4fe3f7b5c46e38b2d56f2606fd4b30dce0f6 15036356 open5gs_2.7.6.4747.da27.tar.xz + c52bf24d4d4e59e71dce00855ea62dc67d362a954e4bf15a4fb70bf80b170900 15038444 open5gs_2.7.6.4751.5939.tar.xz Files: - 7b4f8aab62c8cbc7ab377a9d246ade47 15036356 open5gs_2.7.6.4747.da27.tar.xz + a9fe595119f9951748387abe58f0548f 15038444 open5gs_2.7.6.4751.5939.tar.xz
View file
open5gs_2.7.6.4747.da27.tar.xz/.tarball-version -> open5gs_2.7.6.4751.5939.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.7.6.4747-da27 +2.7.6.4751-5939
View file
open5gs_2.7.6.4747.da27.tar.xz/debian/changelog -> open5gs_2.7.6.4751.5939.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.7.6.4747.da27) unstable; urgency=medium +open5gs (2.7.6.4751.5939) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Tue, 19 Aug 2025 07:34:12 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sun, 24 Aug 2025 02:02:52 +0000 open5gs (2.7.6) unstable; urgency=medium
View file
open5gs_2.7.6.4747.da27.tar.xz/lib/nas/5gs/types.c -> open5gs_2.7.6.4751.5939.tar.xz/lib/nas/5gs/types.c
Changed
@@ -273,7 +273,7 @@ ogs_nas_build_s_nssai(&nas_s_nssai, nas_s_nssai_ie + i); memcpy(nas_nssai->buffer + nas_nssai->length, &nas_s_nssai, sizeof(nas_s_nssai.length) + nas_s_nssai.length); - nas_nssai->length += + nas_nssai->length += (sizeof(nas_s_nssai.length) + nas_s_nssai.length); } } @@ -805,14 +805,216 @@ return OGS_OK; } +/* Parse "Packet filter list", 3GPP TS 24.501 Figure 9.11.4.13.3 and Figure 9.11.4.13. */ +static int parse_qos_rules_packet_filter_list(ogs_nas_qos_rule_t *rule, const uint8_t *buffer, uint16_t length) { + uint16_t size = 0; + int i, j, len = 0; + + for (i = 0; i < rule->num_of_packet_filter && i < OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) { + if (size+sizeof(rule->pfi.flags) > length) { + ogs_error("PF%d Overflow: size%d length%d", i, size, length); + goto cleanup; + } + memcpy(&rule->pfi.flags, buffer+size, sizeof(rule->pfi.flags)); + size += sizeof(rule->pfi.flags); + + if (rule->code == + OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_DELETE_PACKET_FILTERS) + continue; + + if (size+sizeof(rule->pfi.content.length) > length) { + ogs_error("PF%d Overflow: size%d length%d", i, size, length); + goto cleanup; + } + memcpy(&rule->pfi.content.length, buffer+size, + sizeof(rule->pfi.content.length)); + size += sizeof(rule->pfi.content.length); + + j = 0; len = 0; + while(len < rule->pfi.content.length) { + if (size+len+ + sizeof(rule->pfi.content.componentj.type) > length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.type, + buffer+size+len, + sizeof(rule->pfi.content.componentj.type)); + len += sizeof(rule->pfi.content.componentj.type); + switch(rule->pfi.content.componentj.type) { + case OGS_PACKET_FILTER_MATCH_ALL: + break; + case OGS_PACKET_FILTER_PROTOCOL_IDENTIFIER_NEXT_HEADER_TYPE: + if (size+len+ + sizeof(rule->pfi.content.componentj.proto) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.proto, + buffer+size+len, + sizeof(rule->pfi.content.componentj.proto)); + len += sizeof(rule->pfi.content.componentj.proto); + break; + case OGS_PACKET_FILTER_IPV4_REMOTE_ADDRESS_TYPE: + case OGS_PACKET_FILTER_IPV4_LOCAL_ADDRESS_TYPE: + if (size+len+ + sizeof(rule->pfi.content.componentj.ipv4.addr) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv4.addr, + buffer+size+len, + sizeof(rule->pfi.content.componentj.ipv4.addr)); + len += sizeof(rule->pfi.content.componentj.ipv4.addr); + + if (size+len+ + sizeof(rule->pfi.content.componentj.ipv4.mask) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv4.mask, + buffer+size+len, + sizeof(rule->pfi.content.componentj.ipv4.mask)); + len += sizeof(rule->pfi.content.componentj.ipv4.mask); + break; + case OGS_PACKET_FILTER_IPV6_LOCAL_ADDRESS_PREFIX_LENGTH_TYPE: + case OGS_PACKET_FILTER_IPV6_REMOTE_ADDRESS_PREFIX_LENGTH_TYPE: + if (size+len+ + sizeof(rule->pfi.content.componentj.ipv6.addr) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv6.addr, + buffer+size+len, + sizeof(rule->pfi.content.componentj.ipv6.addr)); + len += sizeof(rule->pfi.content.componentj.ipv6.addr); + + if (size+len+ + sizeof( + rule->pfi.content.componentj.ipv6.prefixlen) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv6.prefixlen, + buffer+size+len, + sizeof( + rule->pfi.content.componentj.ipv6.prefixlen)); + len += sizeof( + rule->pfi.content.componentj.ipv6.prefixlen); + break; + case OGS_PACKET_FILTER_IPV6_LOCAL_ADDRESS_TYPE: + case OGS_PACKET_FILTER_IPV6_REMOTE_ADDRESS_TYPE: + if (size+len+ + sizeof( + rule->pfi.content.componentj.ipv6_mask.addr) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv6_mask.addr, + buffer+size+len, + sizeof( + rule->pfi.content.componentj.ipv6_mask.addr)); + len += sizeof( + rule->pfi.content.componentj.ipv6_mask.addr); + + if (size+len+ + sizeof( + rule->pfi.content.componentj.ipv6_mask.mask) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.ipv6_mask.mask, + buffer+size+len, + sizeof( + rule->pfi.content.componentj.ipv6_mask.mask)); + len += sizeof( + rule->pfi.content.componentj.ipv6_mask.mask); + break; + case OGS_PACKET_FILTER_SINGLE_LOCAL_PORT_TYPE: + case OGS_PACKET_FILTER_SINGLE_REMOTE_PORT_TYPE: + if (size+len+ + sizeof(rule->pfi.content.componentj.port.low) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.port.low, + buffer+size+len, + sizeof(rule->pfi.content.componentj.port.low)); + rule->pfi.content.componentj.port.low = + be16toh(rule->pfi.content.componentj.port.low); + len += sizeof(rule->pfi.content.componentj.port.low); + break; + case OGS_PACKET_FILTER_LOCAL_PORT_RANGE_TYPE: + case OGS_PACKET_FILTER_REMOTE_PORT_RANGE_TYPE: + if (size+len+ + sizeof(rule->pfi.content.componentj.port.low) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.port.low, + buffer+size+len, + sizeof(rule->pfi.content.componentj.port.low)); + rule->pfi.content.componentj.port.low = + be16toh(rule->pfi.content.componentj.port.low); + len += sizeof(rule->pfi.content.componentj.port.low); + + if (size+len+ + sizeof(rule->pfi.content.componentj.port.high) > + length) { + ogs_error("PF%d Overflow: size%d len%d length%d", + i, size, len, length); + goto cleanup; + } + memcpy(&rule->pfi.content.componentj.port.high, + buffer+size+len, + sizeof(rule->pfi.content.componentj.port.high)); + rule->pfi.content.componentj.port.high = + be16toh(rule->pfi.content.componentj.port.high); + len += sizeof(rule->pfi.content.componentj.port.high); + break; + default: + ogs_error("PF%d Unknown Packet Filter Type(%d)", + i, rule->pfi.content.componentj.type); + goto cleanup; + } + j++; + } + rule->pfi.content.num_of_component = j; + size += len; + } + return size; +cleanup: + return -1; +} + +/* Parse "QoS rules", 3GPP TS 24.501 Figure 9.11.4.13.1. */ int ogs_nas_parse_qos_rules( ogs_nas_qos_rule_t *rule, ogs_nas_qos_rules_t *rules) { ogs_nas_qos_rule_t *first = rule; - char *buffer; - uint16_t length, size = 0; - int i, j, len = 0; + uint8_t *buffer; + uint16_t length, size; + int rc; ogs_assert(rule); ogs_assert(rules); @@ -828,9 +1030,10 @@ length = rules->length; buffer = rules->buffer; - size = 0; + while (size < length) { + bool have_octet_m1, have_octet_m2; memset(rule, 0, sizeof(*rule)); if (size+sizeof(rule->identifier) > length) { @@ -841,244 +1044,106 @@ size += sizeof(rule->identifier); if (size+sizeof(rule->length) > length) { - ogs_error("Overflow : size%d length%d", size, length); + ogs_error("RuleId%u Overflow: size%d length%d", rule->identifier, size, length); goto cleanup; } memcpy(&rule->length, buffer+size, sizeof(rule->length)); rule->length = be16toh(rule->length); size += sizeof(rule->length); + if (rule->length == 0) { + ogs_error("RuleId%u Wrong 'Length of QoS rule' (0)", rule->identifier); + goto cleanup; + } + if (size+sizeof(rule->flags) > length) { - ogs_error("Overflow : size%d length%d", size, length); + ogs_error("RuleId%u Overflow: size%d length%d", rule->identifier, size, length); goto cleanup; } memcpy(&rule->flags, buffer+size, sizeof(rule->flags)); size += sizeof(rule->flags); if (rule->code == 0 || rule->code == 7) { /* Reserved */ - ogs_error("Reserved Rule Code %d", rule->code); + ogs_error("RuleId%u Reserved Rule Code %d", rule->identifier, rule->code); goto cleanup; } if (rule->code == OGS_NAS_QOS_CODE_DELETE_EXISTING_QOS_RULE || rule->code == OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_WITHOUT_MODIFYING_PACKET_FILTERS) { if (rule->num_of_packet_filter != 0) { - ogs_error("Invalue QoS rule code%d " - "and number of packet filter%d", - rule->code, rule->num_of_packet_filter); + ogs_error("RuleId%u Invalid QoS rule code%d and number of packet filter%d", + rule->identifier, rule->code, rule->num_of_packet_filter); rule->num_of_packet_filter = 0; goto cleanup; } } - for (i = 0; i < rule->num_of_packet_filter && - i < OGS_MAX_NUM_OF_FLOW_IN_GTP; i++) { - if (size+sizeof(rule->pfi.flags) > length) { - ogs_error("Overflow : size%d length%d", size, length); - goto cleanup; - } - memcpy(&rule->pfi.flags, buffer+size, sizeof(rule->pfi.flags)); - size += sizeof(rule->pfi.flags); + rc = parse_qos_rules_packet_filter_list(rule, buffer + size, rule->length - 1); + if (rc < 0) + goto cleanup; + size += rc; - if (rule->code == - OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_DELETE_PACKET_FILTERS) - continue; + if (rule->length == (sizeof(rule->flags) + rc)) { + have_octet_m1 = false; + have_octet_m2 = false; + } else if (rule->length == (sizeof(rule->flags) + rc + sizeof(rule->precedence))) { + have_octet_m1 = true; + have_octet_m2 = false; + } else if (rule->length == (sizeof(rule->flags) + rc + sizeof(rule->precedence) + sizeof(rule->flow.flags))) { + have_octet_m1 = true; + have_octet_m2 = true; + } else { + ogs_error("RuleId%u 'Length of QoS rule' (%d) doesn't match parsed length (%zu..%zu)", + rule->identifier, rule->length, + sizeof(rule->flags) + rc, + sizeof(rule->flags) + rc + sizeof(rule->precedence) + sizeof(rule->flow.flags)); + goto cleanup; + } - if (size+sizeof(rule->pfi.content.length) > length) { - ogs_error("Overflow : size%d length%d", size, length); + if (have_octet_m1) { + if ((size + sizeof(rule->precedence)) > length) { + ogs_error("RuleId%u Overflow m+1: size%d length%d", rule->identifier, size, length); + goto cleanup; + } + memcpy(&rule->precedence, buffer+size, sizeof(rule->precedence)); + size += sizeof(rule->precedence); + /* 'For the "delete existing QoS rule" operation, the QoS rule precedence value field shall not + * be included.' + * This implicitly means also m+2 shall neither be present, following Table 9.11.4.13. "NOTE 1". */ + if (rule->code == OGS_NAS_QOS_CODE_DELETE_EXISTING_QOS_RULE) { + ogs_error("RuleId%u Invalid QoS rule code%d and presence of Precedence octet %u", + rule->identifier, rule->code, rule->precedence); goto cleanup; } - memcpy(&rule->pfi.content.length, buffer+size, - sizeof(rule->pfi.content.length)); - size += sizeof(rule->pfi.content.length); - j = 0; len = 0; - while(len < rule->pfi.content.length) { - if (size+len+ - sizeof(rule->pfi.content.componentj.type) > length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); + if (have_octet_m2) { + if ((size + sizeof(rule->flow.flags)) > length) { + ogs_error("RuleId%u Overflow m+2: size%d length%d", rule->identifier, size, length); goto cleanup; } - memcpy(&rule->pfi.content.componentj.type, - buffer+size+len, - sizeof(rule->pfi.content.componentj.type)); - len += sizeof(rule->pfi.content.componentj.type); - switch(rule->pfi.content.componentj.type) { - case OGS_PACKET_FILTER_PROTOCOL_IDENTIFIER_NEXT_HEADER_TYPE: - if (size+len+ - sizeof(rule->pfi.content.componentj.proto) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.proto, - buffer+size+len, - sizeof(rule->pfi.content.componentj.proto)); - len += sizeof(rule->pfi.content.componentj.proto); - break; - case OGS_PACKET_FILTER_IPV4_REMOTE_ADDRESS_TYPE: - case OGS_PACKET_FILTER_IPV4_LOCAL_ADDRESS_TYPE: - if (size+len+ - sizeof(rule->pfi.content.componentj.ipv4.addr) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv4.addr, - buffer+size+len, - sizeof(rule->pfi.content.componentj.ipv4.addr)); - len += sizeof(rule->pfi.content.componentj.ipv4.addr); - - if (size+len+ - sizeof(rule->pfi.content.componentj.ipv4.mask) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv4.mask, - buffer+size+len, - sizeof(rule->pfi.content.componentj.ipv4.mask)); - len += sizeof(rule->pfi.content.componentj.ipv4.mask); - break; - case OGS_PACKET_FILTER_IPV6_LOCAL_ADDRESS_PREFIX_LENGTH_TYPE: - case OGS_PACKET_FILTER_IPV6_REMOTE_ADDRESS_PREFIX_LENGTH_TYPE: - if (size+len+ - sizeof(rule->pfi.content.componentj.ipv6.addr) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv6.addr, - buffer+size+len, - sizeof(rule->pfi.content.componentj.ipv6.addr)); - len += sizeof(rule->pfi.content.componentj.ipv6.addr); - - if (size+len+ - sizeof( - rule->pfi.content.componentj.ipv6.prefixlen) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv6.prefixlen, - buffer+size+len, - sizeof( - rule->pfi.content.componentj.ipv6.prefixlen)); - len += sizeof( - rule->pfi.content.componentj.ipv6.prefixlen); - break; - case OGS_PACKET_FILTER_IPV6_LOCAL_ADDRESS_TYPE: - case OGS_PACKET_FILTER_IPV6_REMOTE_ADDRESS_TYPE: - if (size+len+ - sizeof( - rule->pfi.content.componentj.ipv6_mask.addr) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv6_mask.addr, - buffer+size+len, - sizeof( - rule->pfi.content.componentj.ipv6_mask.addr)); - len += sizeof( - rule->pfi.content.componentj.ipv6_mask.addr); - - if (size+len+ - sizeof( - rule->pfi.content.componentj.ipv6_mask.mask) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.ipv6_mask.mask, - buffer+size+len, - sizeof( - rule->pfi.content.componentj.ipv6_mask.mask)); - len += sizeof( - rule->pfi.content.componentj.ipv6_mask.mask); - break; - case OGS_PACKET_FILTER_SINGLE_LOCAL_PORT_TYPE: - case OGS_PACKET_FILTER_SINGLE_REMOTE_PORT_TYPE: - if (size+len+ - sizeof(rule->pfi.content.componentj.port.low) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.port.low, - buffer+size+len, - sizeof(rule->pfi.content.componentj.port.low)); - rule->pfi.content.componentj.port.low = - be16toh(rule->pfi.content.componentj.port.low); - len += sizeof(rule->pfi.content.componentj.port.low); - break; - case OGS_PACKET_FILTER_LOCAL_PORT_RANGE_TYPE: - case OGS_PACKET_FILTER_REMOTE_PORT_RANGE_TYPE: - if (size+len+ - sizeof(rule->pfi.content.componentj.port.low) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.port.low, - buffer+size+len, - sizeof(rule->pfi.content.componentj.port.low)); - rule->pfi.content.componentj.port.low = - be16toh(rule->pfi.content.componentj.port.low); - len += sizeof(rule->pfi.content.componentj.port.low); - - if (size+len+ - sizeof(rule->pfi.content.componentj.port.high) > - length) { - ogs_error("Overflow : size%d len%d length%d", - size, len, length); - goto cleanup; - } - memcpy(&rule->pfi.content.componentj.port.high, - buffer+size+len, - sizeof(rule->pfi.content.componentj.port.high)); - rule->pfi.content.componentj.port.high = - be16toh(rule->pfi.content.componentj.port.high); - len += sizeof(rule->pfi.content.componentj.port.high); - break; - default: - ogs_error("Unknown Packet Filter Type(%d)", - rule->pfi.content.componentj.type); + memcpy(&rule->flow.flags, buffer+size, sizeof(rule->flow.flags)); + size += sizeof(rule->flow.flags); + /* 'For the "delete existing QoS rule" operation, the QoS rule precedence value field shall not + * be included.' + * This implicitly means also m+2 shall neither be present, following Table 9.11.4.13. "NOTE 1". */ + if (rule->code == OGS_NAS_QOS_CODE_DELETE_EXISTING_QOS_RULE) { + ogs_error("RuleId%u Invalid QoS rule code%d and presence of QFI octet %u", + rule->identifier, rule->code, rule->flow.flags); goto cleanup; } - j++; - } - rule->pfi.content.num_of_component = j; - size += len; - } - - if (rule->code != OGS_NAS_QOS_CODE_DELETE_EXISTING_QOS_RULE && - rule->code != OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_DELETE_PACKET_FILTERS && - rule->code != OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_WITHOUT_MODIFYING_PACKET_FILTERS) { - - if (size+sizeof(rule->precedence) > length) { - ogs_error("Overflow : size%d length%d", size, length); + } else if (rule->code == OGS_NAS_QOS_CODE_CREATE_NEW_QOS_RULE) { + /* 'For the "create new QoS rule" operation, the QoS flow identifier value field shall + * be included.' */ + ogs_error("RuleId%u Invalid QoS rule code%d without QFI octet", + rule->identifier, rule->code); goto cleanup; } - memcpy(&rule->precedence, buffer+size, sizeof(rule->precedence)); - size += sizeof(rule->precedence); - - if (size+sizeof(rule->flow.flags) > length) { - ogs_error("Overflow : size%d length%d", size, length); + } else if (rule->code == OGS_NAS_QOS_CODE_CREATE_NEW_QOS_RULE) { + /* 'For the "create new QoS rule" operation, the QoS rule precedence value field shall + * be included.' */ + ogs_error("RuleId%u Invalid QoS rule code%d without Precedence octet", + rule->identifier, rule->code); goto cleanup; - } - memcpy(&rule->flow.flags, buffer+size, sizeof(rule->flow.flags)); - size += sizeof(rule->flow.flags); } rule++;
View file
open5gs_2.7.6.4747.da27.tar.xz/src/smf/gsm-build.c -> open5gs_2.7.6.4751.5939.tar.xz/src/smf/gsm-build.c
Changed
@@ -752,7 +752,6 @@ qos_rule_code != OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_AND_DELETE_PACKET_FILTERS && qos_rule_code != OGS_NAS_QOS_CODE_MODIFY_EXISTING_QOS_RULE_WITHOUT_MODIFYING_PACKET_FILTERS) { - ogs_assert(dl_pdr->precedence > 0 && dl_pdr->precedence < 255); qos_rule->precedence = dl_pdr->precedence; qos_rule->flow.segregation = 0; qos_rule->flow.identifier = qos_flow->qfi;
View file
open5gs_2.7.6.4747.da27.tar.xz/src/smf/gsm-handler.c -> open5gs_2.7.6.4751.5939.tar.xz/src/smf/gsm-handler.c
Changed
@@ -112,6 +112,8 @@ pf->direction = qos_rule->pfi.direction; for (j = 0; j < qos_rule->pfi.content.num_of_component; j++) { switch(qos_rule->pfi.content.componentj.type) { + case OGS_PACKET_FILTER_MATCH_ALL: + break; case OGS_PACKET_FILTER_PROTOCOL_IDENTIFIER_NEXT_HEADER_TYPE: pf->ipfw_rule.proto = qos_rule->pfi.content.componentj.proto; break;
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.