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

ASF subversion and git services commented on KUDU-3647:
-------------------------------------------------------

Commit 4d20ea93600acdf64617ed648f274d236369ed44 in kudu's branch 
refs/heads/branch-1.18.x from Alexey Serbin
[ https://gitbox.apache.org/repos/asf?p=kudu.git;h=4d20ea936 ]

KUDU-3647 more robust zlib wrapper code

This patch introduces much more robust error handling for both
zlib::{CompressLevel,Uncompress}() utility wrappers and fixes a few bugs
introduced along with other modifications in [1].  In addition, the code
now follows the documented API of zlib's inflate()/deflate() more
closely per docs [2] and example [3], while zlib::CompressLevel()
no longer allocates memory on the heap and uses a much smaller
stack-allocated buffer.  It seems that using a larger heap-allocated
buffer inadvertently hid the improper usage of zlib's deflate() API.

This patch adds a few test scenarios to cover the main functionality
of zlib::CompressLevel() and zlib::Uncompress(), and also a few specific
conditions attributed to truncated and corrupted input data that's fed
to zlib::Uncompress().

[1] https://issues.apache.org/jira/browse/KUDU-3201
[2] https://zlib.net/zlib_how.html
[3] https://zlib.net/zpipe.c

Change-Id: I5babcaf0a07c284d44f16201aa765e277b6464d3
Reviewed-on: http://gerrit.cloudera.org:8080/22568
Reviewed-by: Abhishek Chennaka <achenn...@cloudera.com>
Tested-by: Alexey Serbin <ale...@apache.org>
(cherry picked from commit 1733cfc5adaa27e361e2f2df25a8d8c12d8c8710)
Reviewed-on: http://gerrit.cloudera.org:8080/22608
Reviewed-by: Marton Greber <greber...@gmail.com>


> zlib::Uncompress() wrapper isn't robust enough to detect truncated input data
> -----------------------------------------------------------------------------
>
>                 Key: KUDU-3647
>                 URL: https://issues.apache.org/jira/browse/KUDU-3647
>             Project: Kudu
>          Issue Type: Bug
>          Components: hms, master, server, util
>    Affects Versions: 1.14.0, 1.15.0, 1.16.0, 1.17.0, 1.17.1
>            Reporter: Alexey Serbin
>            Priority: Major
>
> Along with modifications introduced with 
> [KUDU-3201|https://issues.apache.org/jira/browse/KUDU-3201], there was an 
> update on {{zlib::Uncompress(...)}} where the condition on continuing 
> {{inflate(...)}} had changed.  That leads to inability to detect truncated 
> gzip data in some scenarios, e.g. something that {{DecodeBase64()}} produced 
> prior fixing [KUDU-3646|https://issues.apache.org/jira/browse/KUDU-3646].  
> The litmus test for that is 
> {{HmsNotificationLogListenerTest.TestGzipEventDecoding}} in 
> {{hms_notification_log_listener-test.cc}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to