linux_inet_diag: get rid of alloca usage
commit65b7739431a9cdb98b8f356f5794b3ac81e87705
authorEric Wong <bofh@yhbt.net>
Sun, 11 Jun 2023 21:33:27 +0000 (11 21:33 +0000)
committerEric Wong <bofh@yhbt.net>
Mon, 26 Jun 2023 09:16:38 +0000 (26 09:16 +0000)
tree6dcc553021c222c138af70a9ff312518c345b935
parent09a2f8678e7eddfc604ca7284fec81e278b774bc
linux_inet_diag: get rid of alloca usage

alloca makes stack usage unpredictable and life difficult for
static analysis tools and compilers.  The 46 bytes of
INET6_ADDRSTRLEN is fine to keep on stack, but page size can be
several MB large in some architectures (but typically 4K on
common architectures).

Thus we handle page size-ed allocations via `rb_str_tmp_new'.
`rb_str_tmp_new' has been in public Ruby headers since the 1.9
days and used by the core `zlib', `digest', and `zlib'
extensions, so it should be safe to use (and `rb_str_resize' is
used in many more C extensions).
ext/raindrops/linux_inet_diag.c