diff options
Diffstat (limited to 'nss/makedb.c')
-rw-r--r-- | nss/makedb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/nss/makedb.c b/nss/makedb.c index 74edb74..9389f6b 100644 --- a/nss/makedb.c +++ b/nss/makedb.c @@ -747,7 +747,8 @@ write_output (int fd) header->valstrlen = valstrlen; size_t filled_dbs = 0; - struct iovec iov[2 + ndatabases * 3]; + size_t iov_nelts = 2 + ndatabases * 3; + struct iovec iov[iov_nelts]; iov[0].iov_base = header; iov[0].iov_len = file_offset; @@ -791,7 +792,9 @@ write_output (int fd) + nhashentries_total * sizeof (stridx_t))); header->allocate = file_offset; - if (writev (fd, iov, 2 + ndatabases * 3) != keydataoffset) + /* Help GCC 10 see iov_nelts doesn't overflow the writev argument. */ + assert (iov_nelts <= INT_MAX); + if (writev (fd, iov, iov_nelts) != keydataoffset) { error (0, errno, gettext ("failed to write new database file")); return EXIT_FAILURE; |