You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Anatoly Kanivetsky (JIRA)" <ji...@apache.org> on 2011/06/10 10:31:01 UTC

[jira] [Issue Comment Edited] (THRIFT-1191) Erlang binding throws during skipping fields of composite type (maps, lists, structs, sets)

    [ https://issues.apache.org/jira/browse/THRIFT-1191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13047074#comment-13047074 ] 

Anatoly Kanivetsky edited comment on THRIFT-1191 at 6/10/11 8:30 AM:
---------------------------------------------------------------------

I'll give an example:

struct TheTest
{
    1: optional i32         field1;
    2: optional list<i32>   field2;
}

A = #theTest{field1=256, field2=[128, 64]}

Simple test is when structure A got serialized, we got:
<<8,0,1,255,255,255,255,15,0,2,8,0,0,0,2,0,0,0,128,0,0,0,129,0>>
 |___this is field 1___|____________this is field 2___________|

Let's then remove field 2 from TheTest structure.
Reading from this binary should skip field 2, but, because of the bug in the code, it just throws an exception.

The bug consists of calling thrift_protocol:skip(IProto0, FType) with FType is integer, representing the field type. But thrift_protocol:skip accepts the atom with type instead of integer.



      was (Author: chaos-ad):
    I'll give an example:

struct TheTest
{
    1: optional i32         field1;
    2: optional list<i32>   field2;
}

A = #theTest{field1=256, field2=[128, 64]}

Simple test is when structure A got serialized, we got:
<<8,0,1,255,255,255,255,15,0,2,8,0,0,0,2,0,0,0,128,0,0,0,129,0>>

Next, if we delete field #2, reading this binary to #theTest again should skip removed field.
But because of bug in the code, it fails to read it.

The bug consists of calling thrift_protocol:skip(IProto0, FType) with FType is integer, representing the field type. But thrift_protocol:skip accepts the atom with type instead of integer.


  
> Erlang binding throws during skipping fields of composite type (maps, lists, structs, sets)
> -------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-1191
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1191
>             Project: Thrift
>          Issue Type: Bug
>          Components: Erlang - Library
>            Reporter: Anatoly Kanivetsky
>         Attachments: THRIFT-1191.patch
>
>
> Erlang binding throws during skipping fields of composite type (maps, lists, structs, sets)
> Here's the pull request with this fix:
> https://github.com/apache/thrift/pull/3 here is the patch
> Here's the fix only:
> https://github.com/chaos-ad/thrift/commit/d70576209ae01f7ae56a1afccc1210d120b0ecde

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira