
1 function with some indirect sub-type change:

  [C]'function PK11SymKey* NSS_CMSContentInfo_GetBulkKey(NSSCMSContentInfo*)' at cmscinfo.c:363:1 has some indirect sub-type changes:
    parameter 1 of type 'NSSCMSContentInfo*' has sub-type changes:
      in pointed to type 'typedef NSSCMSContentInfo' at cmst.h:54:1:
        underlying type 'struct NSSCMSContentInfoStr' at cmst.h:126:1 changed:
          type size hasn't changed
          1 data member changes (2 filtered):
           type of 'NSSCMSContent NSSCMSContentInfoStr::content' changed:
             underlying type 'union NSSCMSContentUnion' at cmst.h:113:1 changed:
               type size hasn't changed
               1 data member changes (3 filtered):
                type of 'NSSCMSEncryptedData* NSSCMSContentUnion::encryptedData' changed:
                  in pointed to type 'typedef NSSCMSEncryptedData' at cmst.h:65:1:
                    underlying type 'struct NSSCMSEncryptedDataStr' at cmst.h:463:1 changed:
                      type size hasn't changed
                      1 data member changes (1 filtered):
                       type of 'NSSCMSAttribute** NSSCMSEncryptedDataStr::unprotectedAttr' changed:
                         in pointed to type 'NSSCMSAttribute*':
                           in pointed to type 'typedef NSSCMSAttribute' at cmst.h:69:1:
                             underlying type 'struct NSSCMSAttributeStr' at cmst.h:482:1 changed:
                               type size hasn't changed
                               1 data member change:
                                type of 'SECOidData* NSSCMSAttributeStr::typeTag' changed:
                                  in pointed to type 'typedef SECOidData' at secoidt.h:16:1:
                                    underlying type 'struct SECOidDataStr' at secoidt.h:513:1 changed:
                                      type size hasn't changed
                                      1 data member change:
                                       type of 'SECOidTag SECOidDataStr::offset' changed:
                                         underlying type 'enum __anonymous_enum__' at secoidt.h:34:1 changed:
                                           type size hasn't changed
                                           4 enumerator insertions:
                                             '__anonymous_enum__::SEC_OID_X509_ANY_EXT_KEY_USAGE' value '357'
                                             '__anonymous_enum__::SEC_OID_EXT_KEY_USAGE_IPSEC_IKE' value '358'
                                             '__anonymous_enum__::SEC_OID_IPSEC_IKE_END' value '359'
                                             '__anonymous_enum__::SEC_OID_IPSEC_IKE_INTERMEDIATE' value '360'

                                           1 enumerator change:
                                             '__anonymous_enum__::SEC_OID_TOTAL' from value '357' to '361' at secoidt.h:34:1








