Skip to content

decode BINSTRING/SHORT_BINSTRING in custom_genops_from_bytes - #53

Open
abdul-khaliq-khalid wants to merge 1 commit into
google:mainfrom
abdul-khaliq-khalid:binstring-genops-decode
Open

abdul-khaliq-khalid wants to merge 1 commit into
google:mainfrom
abdul-khaliq-khalid:binstring-genops-decode

Conversation

@abdul-khaliq-khalid

Copy link
Copy Markdown

custom_genops_from_bytes and partition_pickle_chunks never decode BINSTRING (0x54) or SHORT_BINSTRING (0x55), so for pickles at or above MIN_SIZE_FOR_CHUNKING (which run through this byte-buffer path via shared memory) any string operand carried in those opcodes is skipped and the unhandled byte desyncs the stride parser. A 31MB pickle holding os.system as SHORT_BINUNICODE scores unsafe=3 while the same payload as SHORT_BINSTRING scores unsafe=0, even though the stream path _custom_genops and the real unpickler both read these opcodes and this path should too. I decoded both the same way as their BINUNICODE siblings (1-byte and 4-byte latin-1 strings) and taught the chunk partitioner to skip them so boundaries stay opcode-aligned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant