Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-401

Badly behaved counterparty sending FIX.5.0 as begin string causes exceptions

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Default
    • Resolution: Fixed
    • Affects Version/s: 1.3.3
    • Fix Version/s: 1.5.1
    • Component/s: Engine
    • Labels:
      None

      Description

      The following context diff shows a patch which cleans up the issue by reducing the possibility of a null pointer.

          • quickfixj/core/src/main/java/quickfix/MessageUtils.java Thu Jan 15 11:47:03 2009
          • quickfixj-svn/core/src/main/java/quickfix/MessageUtils.java Tue Jan 20 15:49:54 2009
            ***************
          • 104,107 ****
          • 104,116 ----
            String customApplVerID = null;

      + MessageFactory messageFactory = session.getMessageFactory();
      + DataDictionaryProvider ddProvider = session.getDataDictionaryProvider();
      + DataDictionary sessionDataDictionary = ddProvider.getSessionDataDictionary(beginString);
      + DataDictionary payloadDataDictionary = null;
      +
      + // We check and if it's a Admin message we don't need anything more
      + if (MessageUtils.isAdminMessage(msgType))

      { + payloadDataDictionary = sessionDataDictionary; + }

      else {
      if (FixVersions.BEGINSTRING_FIXT11.equals(beginString))

      { applVerID = getApplVerID(session, messageString); *************** *** 111,128 **** }

      ! MessageFactory messageFactory = session.getMessageFactory();
      !
      ! DataDictionaryProvider ddProvider = session.getDataDictionaryProvider();
      ! DataDictionary sessionDataDictionary = ddProvider.getSessionDataDictionary(beginString);
      ! DataDictionary applicationDataDictionary = ddProvider.getApplicationDataDictionary(
      ! applVerID, customApplVerID);

      quickfix.Message message = messageFactory.create(beginString, msgType);
      ! DataDictionary payloadDictionary = MessageUtils.isAdminMessage(msgType)
      ! ? sessionDataDictionary
      ! : applicationDataDictionary;
      !
      ! message.parse(messageString, sessionDataDictionary, payloadDictionary,
      ! payloadDictionary != null);

      return message;

      — 120,130 ----
      }

      ! payloadDataDictionary = ddProvider.getApplicationDataDictionary(applVerID,
      ! customApplVerID);
      ! }

      quickfix.Message message = messageFactory.create(beginString, msgType);
      ! message.parse(messageString, sessionDataDictionary, payloadDataDictionary,
      ! payloadDataDictionary != null);

      return message;

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              jwalters Jay Walters
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: