Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-3935

Incorrect skipping of map and set

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.3
    • Fix Version/s: 0.10.0
    • Component/s: C glib - Library
    • Labels:
      None
    • Environment:

      Ubuntu

    • Patch Info:
      Patch Available
    • Flags:
      Patch

      Description

      If a new map<> is added to the thrift structure and sending this new serialized thrift to the old version that didn't included yet this map definition it should skip it. It does so, but it uses read_set_begin/end instead of read_map_begin/end functions.

      Included patch fixes the problem.

      Thanks,
      Matej

      diff --git a/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c b/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
      index d6315d8..b274b00 100644
      --- a/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
      +++ b/lib/c_glib/src/thrift/c_glib/protocol/thrift_protocol.c
      @@ -489,14 +489,16 @@ thrift_protocol_skip (ThriftProtocol *protocol, ThriftType type, GError **error)
             {
               guint32 result = 0;
               ThriftType elem_type;
      +        ThriftType key_type;
               guint32 i, size;
      -        result += thrift_protocol_read_set_begin (protocol, &elem_type, &size,
      +        result += thrift_protocol_read_map_begin (protocol, &key_type, &elem_type, &size,
                                                         error);
               for (i = 0; i < size; i++)
               {
      +          result += thrift_protocol_skip (protocol, key_type, error);
                 result += thrift_protocol_skip (protocol, elem_type, error);
               }
      -        result += thrift_protocol_read_set_end (protocol, error);
      +        result += thrift_protocol_read_map_end (protocol, error);
               return result;
             }
           case T_LIST:
      

        Attachments

        1. add-set-and-fix-map-skip.patch
          1 kB
          Matej Kupljen

          Activity

            People

            • Assignee:
              matejkupljen Matej Kupljen
              Reporter:
              matejkupljen Matej Kupljen
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: