Bram Moolenaar <b...@moolenaar.net> wrote:

> Patch 8.1.1653
> Problem:    Ubsan warns for possibly passing NULL pointer.
> Solution:   Skip code when length is zero. (Dominique Pelle, closes #4631)
> Files:      src/channel.c
>
>
> *** ../vim-8.1.1652/src/channel.c       2019-06-28 22:06:41.110072146 +0200
> --- src/channel.c       2019-07-08 22:01:10.759502396 +0200
> ***************
> *** 3990,3996 ****
>                     writeq_T *last = wq->wq_prev;
>
>                     /* append to the last entry */
> !                   if (ga_grow(&last->wq_ga, len) == OK)
>                     {
>                         mch_memmove((char *)last->wq_ga.ga_data
>                                                           + 
> last->wq_ga.ga_len,
> --- 3990,3996 ----
>                     writeq_T *last = wq->wq_prev;
>
>                     /* append to the last entry */
> !                   if (len > 0 && ga_grow(&last->wq_ga, len) == OK)
>                     {
>                         mch_memmove((char *)last->wq_ga.ga_data
>                                                           + 
> last->wq_ga.ga_len,
> ***************
> *** 4012,4018 ****
>                             wq->wq_prev->wq_next = last;
>                         wq->wq_prev = last;
>                         ga_init2(&last->wq_ga, 1, 1000);
> !                       if (ga_grow(&last->wq_ga, len) == OK)
>                         {
>                             mch_memmove(last->wq_ga.ga_data, buf, len);
>                             last->wq_ga.ga_len = len;
> --- 4012,4018 ----
>                             wq->wq_prev->wq_next = last;
>                         wq->wq_prev = last;
>                         ga_init2(&last->wq_ga, 1, 1000);
> !                       if (len > 0 && ga_grow(&last->wq_ga, len) == OK)
>                         {
>                             mch_memmove(last->wq_ga.ga_data, buf, len);
>                             last->wq_ga.ga_len = len;

The 2nd chunk of the diff does not seem correct and
is different from how I fixed it in my original PR.

If len is 0, old code used to set  last->wq_ga.ga_len  to 0 but now
that this is skipped. Only the mch_memmove(...) called should have
been skipped.

Regards
Dominique

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAON-T_iyo8wnzEnO2p_HFFW6ZiHEQ3Cu8hf%2BfvaKR3UyAvXwSA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui