[ 
https://issues.apache.org/jira/browse/THRIFT-4563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yerzhan Kaskabay updated THRIFT-4563:
-------------------------------------
    Description: 
Tried to deserialize binary file using deserialize function in 
thrift.TSerialization.py file. Used TBinaryProtocol and thrift file created by 
Java developer. Generated ttypes.py have while loop that runs till break if 
byte=0.

{color:#FF0000}while True:{color}
            (fname, ftype, fid) = iprot.readFieldBegin()
            {color:#FF0000}if ftype == TType.STOP:{color}
{color:#FF0000}                break{color}
            if fid == 1:
                if ftype == TType.I64:
                    self.sessionId = iprot.readI64()
                else:
                    iprot.skip(ftype)

             ...

As far as I understood protocol cannot have 0 byte and breaks when first 0 
appears. Seems as a bug for me! Isn't there more advanced way to check for the 
end of file?
  
 
 

  was:
Tried to deserialize binary file using deserialize function in 
thrift.TSerialization.py file. Used TBinaryProtocol and thrift file created by 
Java developer. generated ttypes.py have while loop that runs till break if 
byte=0. As far as I understood protocol cannot have 0 byte and breaks when 
first 0 appears. Seems as a bug for me!
 
 
 
G
M
T
 
| |Detect 
languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese
 (Simplified)Chinese 
(Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian
 
CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar
 
(Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu|
 
|AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese
 (Simplified)Chinese 
(Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian
 
CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar
 
(Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu|
 | | | | |
 
 
 
Text-to-speech function is limited to 200 characters
 
| | 
|[Options|moz-extension://a55b5f98-d51a-405e-ae0c-146fe1a1a5ca/content/html/options/options.html?bbl]
 : 
[History|moz-extension://a55b5f98-d51a-405e-ae0c-146fe1a1a5ca/content/html/options/options.html?hist]
 : 
[Feedback|moz-extension://a55b5f98-d51a-405e-ae0c-146fe1a1a5ca/content/html/options/options.html?feed]
 : 
[Donate|https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=GD9D8CPW8HFA2]|Close|


> TBinaryProtocol exits at first 0 or "/x00" byte.
> ------------------------------------------------
>
>                 Key: THRIFT-4563
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4563
>             Project: Thrift
>          Issue Type: Bug
>          Components: Python - Library
>    Affects Versions: 0.11.0
>         Environment: python3.6
>            Reporter: Yerzhan Kaskabay
>            Priority: Major
>
> Tried to deserialize binary file using deserialize function in 
> thrift.TSerialization.py file. Used TBinaryProtocol and thrift file created 
> by Java developer. Generated ttypes.py have while loop that runs till break 
> if byte=0.
> {color:#FF0000}while True:{color}
>             (fname, ftype, fid) = iprot.readFieldBegin()
>             {color:#FF0000}if ftype == TType.STOP:{color}
> {color:#FF0000}                break{color}
>             if fid == 1:
>                 if ftype == TType.I64:
>                     self.sessionId = iprot.readI64()
>                 else:
>                     iprot.skip(ftype)
>              ...
> As far as I understood protocol cannot have 0 byte and breaks when first 0 
> appears. Seems as a bug for me! Isn't there more advanced way to check for 
> the end of file?
>   
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to