Skip to content

inflate: total_in misses the header bytes on Z_NEED_DICT - #1297

Open
JasonGross wants to merge 1 commit into
madler:developfrom
JasonGross:inflate-total-in-need-dict
Open

inflate: total_in misses the header bytes on Z_NEED_DICT#1297
JasonGross wants to merge 1 commit into
madler:developfrom
JasonGross:inflate-total-in-need-dict

Conversation

@JasonGross

Copy link
Copy Markdown

case DICT: returns via RESTORE(); return Z_NEED_DICT; without reaching inf_leave, so the six header + DICTID bytes it consumed are never added to total_in. It stays six short through Z_STREAM_END.

No affected caller found.

The added check in test/example.c fails without the fix.

case DICT: returns via RESTORE(); return Z_NEED_DICT; without reaching
inf_leave, the only place total_in is updated. RESTORE() writes the
advanced next_in/avail_in back, so the six header and DICTID bytes are
never counted and total_in stays six short for the rest of the stream.

Re-entering without setting a dictionary adds zero, so the count is not
doubled.

test/example.c: check total_in against the bytes actually consumed after
the dictionary inflate. This fails without the fix.
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