APAR status
Closed as program error.
Error description
When an MQ Classes for Java or MQ Classes for JMS (JMQI) application receives a message body encoded in one CCSID but a different CCSID is defined in the message header (malformed), and the unmappable character system properties are set, the message is not decoded as expected.
Local fix
Problem summary
**************************************************************** USERS AFFECTED: Users of JMQI reliant applications (MQ Classes for Java and MQ Classes for JMS) which are processing malformed messages with the following JVM system properties defined. -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10 character> Further details of these system properties can be found in the official documentation - https://www.ibm.com/docs/en/ibm-mq/latest?topic=messaging-charac ter-string-conversions-in-mq-classes-jms Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: When an MQ Classes for Java or MQ Classes for JMS (JMQI) application receives a message body encoded in one CCSID, but a different CCSID is defined in the message header (malformed), then the message body is not decoded as expected, regardless of whether the following JVM system properties are set. -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10 character> ---- For the below explanation accept that, at the time of this APAR being published, CCSID 819 is synonymous with ISO-8859-1 and CCSID 1208 is synonymous with UTF-8 encoding. Note these specific CCSID's are used here for example only - this APAR can apply to any combination of supported CCSIDs. Consider the following scenario when processing a malformed message with the following JVM system properties explicitly set. -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=63 1) A message is received (MQGET) with the body encoded in CCSID 819, containing the byte 0xE9 (for example), and the message headers specify CCSID 1208. 2) The JMQI will attempt to decode 0xE9 into the "question mark" character (63 in base-10, 0x3F in base-16) since it is outside the supported encoding of CCSID 1208. 3) The JMQI will now erroneously (since the JVM system properties are set) replace 0xE9 with 0xEFBFBD (not 0x3F), which is the CCSID 1208 default replacement character. The JMQI did not honour the values defined in the JVM system properties and therefore failed to replace the unsupported characters in the manner expected by the user of the application.
Problem conclusion
The JMQI will now correctly honour the following JVM system property values when processing a malformed message. -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10 character> Please note that the behaviour of processing malformed messages is in itself not recommended and, where possible, efforts should be made to correct this. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v9.2 LTS 9.2.0.30 v9.3 LTS 9.3.0.20 v9.4 LTS 9.4.0.0 The latest available maintenance can be obtained from 'IBM MQ Recommended Fixes' https://www.ibm.com/support/pages/recommended-fixes-ibm-mq If the maintenance level is not yet available information on its planned availability can be found in 'IBM MQ Planned Maintenance Release Dates' https://ibm.biz/mqplannedmaintenance ---------------------------------------------------------------
Temporary fix
Comments
APAR Information
APAR number
IT45625
Reported component name
MQ BASE V9.2
Reported component ID
5724H7281
Reported release
920
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2024-03-01
Closed date
2024-04-24
Last modified date
2024-05-14
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
MQ BASE V9.2
Fixed component ID
5724H7281
Applicable component levels
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"920","Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"}}]
Document Information
Modified date:
14 May 2024