Mercurial > vim
comparison src/netbeans.c @ 22590:13f4aee01ce5 v8.2.1843
patch 8.2.1843: Netbeans: with huge buffer number memory allocation may fail
Commit: https://github.com/vim/vim/commit/b9616af23f31fc18721a92643c21f42b69854efe
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Oct 13 21:11:13 2020 +0200
patch 8.2.1843: Netbeans: with huge buffer number memory allocation may fail
Problem: Netbeans: with huge buffer number memory allocation may fail.
Solution: Check for size overflow.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 13 Oct 2020 21:15:05 +0200 |
parents | b378f860d4ab |
children | 70eb58639009 |
comparison
equal
deleted
inserted
replaced
22589:97f5ed911b24 | 22590:13f4aee01ce5 |
---|---|
672 } | 672 } |
673 if (bufno >= buf_list_used) // new | 673 if (bufno >= buf_list_used) // new |
674 { | 674 { |
675 if (bufno >= buf_list_size) // grow list | 675 if (bufno >= buf_list_size) // grow list |
676 { | 676 { |
677 nbbuf_T *t_buf_list = buf_list; | 677 nbbuf_T *t_buf_list = buf_list; |
678 size_t bufsize; | |
678 | 679 |
679 incr = bufno - buf_list_size + 90; | 680 incr = bufno - buf_list_size + 90; |
680 buf_list_size += incr; | 681 buf_list_size += incr; |
681 buf_list = vim_realloc(buf_list, buf_list_size * sizeof(nbbuf_T)); | 682 bufsize = buf_list_size * sizeof(nbbuf_T); |
683 if (bufsize == 0 || bufsize / sizeof(nbbuf_T) | |
684 != (size_t)buf_list_size) | |
685 { | |
686 // list size overflow, bail out | |
687 return NULL; | |
688 } | |
689 buf_list = vim_realloc(buf_list, bufsize); | |
682 if (buf_list == NULL) | 690 if (buf_list == NULL) |
683 { | 691 { |
684 vim_free(t_buf_list); | 692 vim_free(t_buf_list); |
685 buf_list_size = 0; | 693 buf_list_size = 0; |
686 return NULL; | 694 return NULL; |