jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-ipa/+/43039?usp=email )
Change subject: V1.2: Change names and structure in IpaEuiccData ......................................................................
V1.2: Change names and structure in IpaEuiccData
The “SEQUENCE OF SGP32-PendingNotification” is now direct member of the IpaEuiccData.
The notficationList in IpaEuiccDataResponse is taken from the RetrieveNotificationsListResponse. After the structure change, the ASN.1 compiler creates two equal definitions in the header files. An assignment causes a C compiler error, so that the pointer to the list must be casted to the definition of the response. (See ipa_proc_euicc_data_req().)
Reference: SGP.32 Section 2.11.2.2
Related: SYS#8101 Change-Id: I0dc80706bff5b2020cbd31a57c9526aae9d50169 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt A src/ipa/libasn/EuiccPackageResultList.c A src/ipa/libasn/EuiccPackageResultList.h M src/ipa/libasn/IpaEuiccData.c M src/ipa/libasn/IpaEuiccData.h A src/ipa/libasn/PendingNotificationList.c A src/ipa/libasn/PendingNotificationList.h M src/ipa/libipa/proc_euicc_data_req.c 9 files changed, 248 insertions(+), 45 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/39/43039/1
diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 93fa33f..c380182 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -317,8 +317,12 @@ ipaEuiccData IpaEuiccData, ipaEuiccDataResponseError IpaEuiccDataResponseError } +PendingNotificationList ::= SEQUENCE OF SGP32-PendingNotification +EuiccPackageResultList ::= SEQUENCE OF EuiccPackageResult IpaEuiccData ::= SEQUENCE { - defaultSmdpAddress [0] UTF8String OPTIONAL, -- Tag '80' + notificationsList [0] PendingNotificationList OPTIONAL, -- Tag 'A0' + defaultSmdpAddress [1] UTF8String OPTIONAL, -- Tag '81' + euiccPackageResultList [2] EuiccPackageResultList OPTIONAL, -- Tag 'A2' euiccInfo1 [32] EUICCInfo1 OPTIONAL, -- Tag 'BF20' euiccInfo2 [34] SGP32-EUICCInfo2 OPTIONAL, -- Tag 'BF22' rootSmdsAddress [3] UTF8String OPTIONAL, -- Tag '83' @@ -326,9 +330,8 @@ eumCertificate [5] Certificate OPTIONAL, -- Tag 'A5' euiccCertificate [6] Certificate OPTIONAL, -- Tag 'A6' eimTransactionId [7] TransactionId OPTIONAL, -- Tag '87' - ipaCapabilities [8] IpaCapabilities OPTIONAL, -- Tag '88' - deviceInfo [9] DeviceInfo OPTIONAL, -- Tag 'A9' - notificationsList [43] SGP32-RetrieveNotificationsListResponse OPTIONAL -- Tag 'BF2B'. + ipaCapabilities [8] IpaCapabilities OPTIONAL, -- Tag 'A8' + deviceInfo [9] DeviceInfo OPTIONAL -- Tag 'A9' } -- ASN1STOP
diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index f9166bd..3c84951 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -329,6 +329,8 @@ EuiccPackageResultDataSigned.c EuiccPackageResultDataSigned.h EuiccPackageResult.h +EuiccPackageResultList.c +EuiccPackageResultList.h EuiccPackageResultSigned.c EuiccPackageResultSigned.h EuiccPackageSigned.c @@ -626,6 +628,8 @@ PE-MF.h PendingNotification.c PendingNotification.h +PendingNotificationList.c +PendingNotificationList.h PE-NonStandard.c PE-NonStandard.h PE-OPT-CSIM.c diff --git a/src/ipa/libasn/EuiccPackageResultList.c b/src/ipa/libasn/EuiccPackageResultList.c new file mode 100644 index 0000000..f6452c7 --- /dev/null +++ b/src/ipa/libasn/EuiccPackageResultList.c @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "EuiccPackageResultList.h" + +asn_TYPE_member_t asn_MBR_EuiccPackageResultList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_CONTEXT | (81 << 2)), + 0, + &asn_DEF_EuiccPackageResult, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_EuiccPackageResultList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_EuiccPackageResultList_specs_1 = { + sizeof(struct EuiccPackageResultList), + offsetof(struct EuiccPackageResultList, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_EuiccPackageResultList = { + "EuiccPackageResultList", + "EuiccPackageResultList", + &asn_OP_SEQUENCE_OF, + asn_DEF_EuiccPackageResultList_tags_1, + sizeof(asn_DEF_EuiccPackageResultList_tags_1) + /sizeof(asn_DEF_EuiccPackageResultList_tags_1[0]), /* 1 */ + asn_DEF_EuiccPackageResultList_tags_1, /* Same as above */ + sizeof(asn_DEF_EuiccPackageResultList_tags_1) + /sizeof(asn_DEF_EuiccPackageResultList_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_OF_constraint }, + asn_MBR_EuiccPackageResultList_1, + 1, /* Single element */ + &asn_SPC_EuiccPackageResultList_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/EuiccPackageResultList.h b/src/ipa/libasn/EuiccPackageResultList.h new file mode 100644 index 0000000..4fb2dda --- /dev/null +++ b/src/ipa/libasn/EuiccPackageResultList.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _EuiccPackageResultList_H_ +#define _EuiccPackageResultList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EuiccPackageResult; + +/* EuiccPackageResultList */ +typedef struct EuiccPackageResultList { + A_SEQUENCE_OF(struct EuiccPackageResult) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EuiccPackageResultList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EuiccPackageResultList; +extern asn_SET_OF_specifics_t asn_SPC_EuiccPackageResultList_specs_1; +extern asn_TYPE_member_t asn_MBR_EuiccPackageResultList_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "EuiccPackageResult.h" + +#endif /* _EuiccPackageResultList_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/IpaEuiccData.c b/src/ipa/libasn/IpaEuiccData.c index 3f44929..8633cce 100644 --- a/src/ipa/libasn/IpaEuiccData.c +++ b/src/ipa/libasn/IpaEuiccData.c @@ -8,16 +8,34 @@ #include "IpaEuiccData.h"
asn_TYPE_member_t asn_MBR_IpaEuiccData_1[] = { - { ATF_POINTER, 11, offsetof(struct IpaEuiccData, defaultSmdpAddress), + { ATF_POINTER, 12, offsetof(struct IpaEuiccData, notificationsList), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ + &asn_DEF_PendingNotificationList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "notificationsList" + }, + { ATF_POINTER, 11, offsetof(struct IpaEuiccData, defaultSmdpAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, { 0, 0, 0 }, 0, 0, /* No default value */ "defaultSmdpAddress" }, - { ATF_POINTER, 10, offsetof(struct IpaEuiccData, euiccInfo1), + { ATF_POINTER, 10, offsetof(struct IpaEuiccData, euiccPackageResultList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EuiccPackageResultList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "euiccPackageResultList" + }, + { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo1), (ASN_TAG_CLASS_CONTEXT | (32 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_EUICCInfo1, @@ -26,7 +44,7 @@ 0, 0, /* No default value */ "euiccInfo1" }, - { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo2), + { ATF_POINTER, 8, offsetof(struct IpaEuiccData, euiccInfo2), (ASN_TAG_CLASS_CONTEXT | (34 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_SGP32_EUICCInfo2, @@ -35,7 +53,7 @@ 0, 0, /* No default value */ "euiccInfo2" }, - { ATF_POINTER, 8, offsetof(struct IpaEuiccData, rootSmdsAddress), + { ATF_POINTER, 7, offsetof(struct IpaEuiccData, rootSmdsAddress), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -44,7 +62,7 @@ 0, 0, /* No default value */ "rootSmdsAddress" }, - { ATF_POINTER, 7, offsetof(struct IpaEuiccData, associationToken), + { ATF_POINTER, 6, offsetof(struct IpaEuiccData, associationToken), (ASN_TAG_CLASS_CONTEXT | (4 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -53,7 +71,7 @@ 0, 0, /* No default value */ "associationToken" }, - { ATF_POINTER, 6, offsetof(struct IpaEuiccData, eumCertificate), + { ATF_POINTER, 5, offsetof(struct IpaEuiccData, eumCertificate), (ASN_TAG_CLASS_CONTEXT | (5 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -62,7 +80,7 @@ 0, 0, /* No default value */ "eumCertificate" }, - { ATF_POINTER, 5, offsetof(struct IpaEuiccData, euiccCertificate), + { ATF_POINTER, 4, offsetof(struct IpaEuiccData, euiccCertificate), (ASN_TAG_CLASS_CONTEXT | (6 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -71,7 +89,7 @@ 0, 0, /* No default value */ "euiccCertificate" }, - { ATF_POINTER, 4, offsetof(struct IpaEuiccData, eimTransactionId), + { ATF_POINTER, 3, offsetof(struct IpaEuiccData, eimTransactionId), (ASN_TAG_CLASS_CONTEXT | (7 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_TransactionId, @@ -80,7 +98,7 @@ 0, 0, /* No default value */ "eimTransactionId" }, - { ATF_POINTER, 3, offsetof(struct IpaEuiccData, ipaCapabilities), + { ATF_POINTER, 2, offsetof(struct IpaEuiccData, ipaCapabilities), (ASN_TAG_CLASS_CONTEXT | (8 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_IpaCapabilities, @@ -89,7 +107,7 @@ 0, 0, /* No default value */ "ipaCapabilities" }, - { ATF_POINTER, 2, offsetof(struct IpaEuiccData, deviceInfo), + { ATF_POINTER, 1, offsetof(struct IpaEuiccData, deviceInfo), (ASN_TAG_CLASS_CONTEXT | (9 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_DeviceInfo, @@ -98,41 +116,33 @@ 0, 0, /* No default value */ "deviceInfo" }, - { ATF_POINTER, 1, offsetof(struct IpaEuiccData, notificationsList), - (ASN_TAG_CLASS_CONTEXT | (43 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_SGP32_RetrieveNotificationsListResponse, - 0, - { 0, 0, 0 }, - 0, 0, /* No default value */ - "notificationsList" - }, }; -static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; +static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; static const ber_tlv_tag_t asn_DEF_IpaEuiccData_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccData_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* defaultSmdpAddress */ - { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rootSmdsAddress */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* associationToken */ - { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* eumCertificate */ - { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* euiccCertificate */ - { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* eimTransactionId */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* ipaCapabilities */ - { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* deviceInfo */ - { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 1, 0, 0 }, /* euiccInfo1 */ - { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 2, 0, 0 }, /* euiccInfo2 */ - { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 10, 0, 0 } /* notificationsList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notificationsList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* defaultSmdpAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* euiccPackageResultList */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 5, 0, 0 }, /* rootSmdsAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 6, 0, 0 }, /* associationToken */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 7, 0, 0 }, /* eumCertificate */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 8, 0, 0 }, /* euiccCertificate */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 9, 0, 0 }, /* eimTransactionId */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 10, 0, 0 }, /* ipaCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 11, 0, 0 }, /* deviceInfo */ + { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 3, 0, 0 }, /* euiccInfo1 */ + { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 4, 0, 0 } /* euiccInfo2 */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1 = { sizeof(struct IpaEuiccData), offsetof(struct IpaEuiccData, _asn_ctx), asn_MAP_IpaEuiccData_tag2el_1, - 11, /* Count of tags in the map */ + 12, /* Count of tags in the map */ asn_MAP_IpaEuiccData_oms_1, /* Optional members */ - 11, 0, /* Root/Additions */ - 11, /* First extension addition */ + 12, 0, /* Root/Additions */ + 12, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_IpaEuiccData = { "IpaEuiccData", @@ -146,7 +156,7 @@ /sizeof(asn_DEF_IpaEuiccData_tags_1[0]), /* 1 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_IpaEuiccData_1, - 11, /* Elements count */ + 12, /* Elements count */ &asn_SPC_IpaEuiccData_specs_1 /* Additional specs */ };
diff --git a/src/ipa/libasn/IpaEuiccData.h b/src/ipa/libasn/IpaEuiccData.h index bf8dc38..740e655 100644 --- a/src/ipa/libasn/IpaEuiccData.h +++ b/src/ipa/libasn/IpaEuiccData.h @@ -22,16 +22,19 @@ #endif
/* Forward declarations */ +struct PendingNotificationList; +struct EuiccPackageResultList; struct EUICCInfo1; struct SGP32_EUICCInfo2; struct Certificate; struct IpaCapabilities; struct DeviceInfo; -struct SGP32_RetrieveNotificationsListResponse;
/* IpaEuiccData */ typedef struct IpaEuiccData { + struct PendingNotificationList *notificationsList /* OPTIONAL */; UTF8String_t *defaultSmdpAddress /* OPTIONAL */; + struct EuiccPackageResultList *euiccPackageResultList /* OPTIONAL */; struct EUICCInfo1 *euiccInfo1 /* OPTIONAL */; struct SGP32_EUICCInfo2 *euiccInfo2 /* OPTIONAL */; UTF8String_t *rootSmdsAddress /* OPTIONAL */; @@ -41,7 +44,6 @@ TransactionId_t *eimTransactionId /* OPTIONAL */; struct IpaCapabilities *ipaCapabilities /* OPTIONAL */; struct DeviceInfo *deviceInfo /* OPTIONAL */; - struct SGP32_RetrieveNotificationsListResponse *notificationsList /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. @@ -54,19 +56,20 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccData; extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1; -extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[11]; +extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[12];
#ifdef __cplusplus } #endif
/* Referred external types */ +#include "PendingNotificationList.h" +#include "EuiccPackageResultList.h" #include "EUICCInfo1.h" #include "SGP32-EUICCInfo2.h" #include "Certificate.h" #include "IpaCapabilities.h" #include "DeviceInfo.h" -#include "SGP32-RetrieveNotificationsListResponse.h"
#endif /* _IpaEuiccData_H_ */ #include <asn_internal.h> diff --git a/src/ipa/libasn/PendingNotificationList.c b/src/ipa/libasn/PendingNotificationList.c new file mode 100644 index 0000000..bbca9a5 --- /dev/null +++ b/src/ipa/libasn/PendingNotificationList.c @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "PendingNotificationList.h" + +asn_TYPE_member_t asn_MBR_PendingNotificationList_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_SGP32_PendingNotification, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PendingNotificationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PendingNotificationList_specs_1 = { + sizeof(struct PendingNotificationList), + offsetof(struct PendingNotificationList, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_PendingNotificationList = { + "PendingNotificationList", + "PendingNotificationList", + &asn_OP_SEQUENCE_OF, + asn_DEF_PendingNotificationList_tags_1, + sizeof(asn_DEF_PendingNotificationList_tags_1) + /sizeof(asn_DEF_PendingNotificationList_tags_1[0]), /* 1 */ + asn_DEF_PendingNotificationList_tags_1, /* Same as above */ + sizeof(asn_DEF_PendingNotificationList_tags_1) + /sizeof(asn_DEF_PendingNotificationList_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_OF_constraint }, + asn_MBR_PendingNotificationList_1, + 1, /* Single element */ + &asn_SPC_PendingNotificationList_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/PendingNotificationList.h b/src/ipa/libasn/PendingNotificationList.h new file mode 100644 index 0000000..2a06c0f --- /dev/null +++ b/src/ipa/libasn/PendingNotificationList.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _PendingNotificationList_H_ +#define _PendingNotificationList_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SGP32_PendingNotification; + +/* PendingNotificationList */ +typedef struct PendingNotificationList { + A_SEQUENCE_OF(struct SGP32_PendingNotification) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PendingNotificationList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PendingNotificationList; +extern asn_SET_OF_specifics_t asn_SPC_PendingNotificationList_specs_1; +extern asn_TYPE_member_t asn_MBR_PendingNotificationList_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "SGP32-PendingNotification.h" + +#endif /* _PendingNotificationList_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libipa/proc_euicc_data_req.c b/src/ipa/libipa/proc_euicc_data_req.c index 2db088b..d084ed6 100644 --- a/src/ipa/libipa/proc_euicc_data_req.c +++ b/src/ipa/libipa/proc_euicc_data_req.c @@ -199,8 +199,11 @@
retr_notif_from_lst_req.dr_search_criteria = pars->ipa_euicc_data_request->searchCriteriaNotification; retr_notif_from_lst_res = ipa_es10b_retr_notif_from_lst(ctx, &retr_notif_from_lst_req); - if (retr_notif_from_lst_res && retr_notif_from_lst_res->sgp32_res) - ipa_euicc_data_response.choice.ipaEuiccData.notificationsList = retr_notif_from_lst_res->sgp32_res; + if (retr_notif_from_lst_res && retr_notif_from_lst_res->sgp32_res && + retr_notif_from_lst_res->sgp32_res->present == SGP32_RetrieveNotificationsListResponse_PR_notificationList) { + ipa_euicc_data_response.choice.ipaEuiccData.notificationsList = + (struct PendingNotificationList *)&retr_notif_from_lst_res->sgp32_res->choice.notificationList; + } }
ipa_euicc_data_response.present = IpaEuiccDataResponse_PR_ipaEuiccData;