[tarantool-patches] Re: [PATCH] travis-ci: set right flags in release testing jobs
Alexander Turenko
alexander.turenko at tarantool.org
Mon Apr 29 00:38:04 MSK 2019
On Sun, Apr 28, 2019 at 12:11:28PM +0300, Vladislav Shpilevoy wrote:
>
> >>
> >>> * xrow_decode_*() functions could read uninitialized data when printing
> >>> a hex code for a row if the received msgpack is empty, but there are
> >>> expected keys.
> >>
> >> Please, suggest a change for wording if the current one is not clear.
>
> Ahh, now I see. It is possible that row->bodycnt == 0 and we jump to
> 'done'. It tries to write an error via xrow_on_decode_err, which reads
> row->body[0]. Probably then I can suggest adding an explicit mention of
> xrow_on_decode_err() function and an attempt to access an array by index
> out of range.
>
> I did not understand your explanation below about cycles and
> dump_row_hex(), because I did not know, that they are not used in
> xrow_decode_dml() directly, but via xrow_on_decode_err().
>
> >> My change causes `for (const char *cur = start; cur < end;) { ... }` in
> >> dump_row_hex() to walk around the loop body and so prevents reading from
> >> `start` in the loop (NULL < NULL is false).
>
> Then you can ignore my comments about xrow_decode_dml and xrow_decode_ballot.
> Others are still valid.
I have updated the comment about the uninitialized data read, added the
comment about getcwd() and the comment about Vinyl:
> Fixed all -Wmaybe-uninitialized and -Wunused-result warnings. A few
> notes about the fixes:
>
> * net.box does not validate received data in general, so I don't add a
> check for autoincrement IDs too. Set the ID to INT64_MIN, because this
> value is less probably will appear here in a normal case and so is the
> best one to signal a user that something probably going wrongly.
> * xrow_decode_*() functions could read uninitialized data from
> row->body[0].iov_base in xrow_on_decode_err() when printing a hex code
> for a row. It could be possible when the received msgpack was empty
> (row->bodycnt == 0), but there were expected keys (key_map != 0).
> * getcwd() is marked with __attribute__((__warn_unused_result__)) in
> glibc, but the buffer filled by this call is not used anywhere and so
> just removed.
> * Vinyl -Wmaybe-uninitialized warnings are false positive ones.
If the patch is okay for you, I'll resend it to Vladimir D. as v2.
> By the way,
>
> \\\ ,
> \ `|
> ) ( .-""-.
> | | /_ { '.
> | | (/ `\ } )
> | | ^/ ^`} {
> \ \ \= ( { )
> \ \ '-, { {{
> \ \_.' ) } )
> \.-' ( (
> /'-.'_. ) ( }
> \_( { _/\
> ) '--' `-;\ \
> _.-' / / /
> <\/>_.' .' / /
> <\/></\>/. ' /<\// /
> </\> _ |\`- _ . -/|<// (
> <\/> - _- ` _.-'`_/- | \
> </\> - - - - \\\
> }`<\/> <\/>`{
> { </\>-<\/>_<\/>_<\/>-</\> }
> } </\> </\> </\> {
> <\/>. <\/>
> </\> </\>
> {`<\/> <\/>`}
> } </\>-<\/>_<\/>_<\/>_<\/>-</\> {
> { </\> </\> </\> </\> }
> } }
> { H A P P Y {
> <\/> B I R T H D A Y <\/>
> </\> </\>
> `<\/> <\/>'
> </\>-<\/>_<\/>_<\/>_<\/>_<\/>-</\>
> </\> </\> </\> </\> </\>
Thanks!
More information about the Tarantool-patches
mailing list