logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0006-Avoid-unnecessary-VLAs.patch (2947B)


  1. From 8c03823959bcb53e16a6555fcc880fe4560cb79f Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Sun, 7 Jul 2019 21:58:46 -0700
  4. Subject: [PATCH] Avoid unnecessary VLAs
  5. ---
  6. src/count.c | 2 +-
  7. src/nlattr.c | 2 +-
  8. src/socketutils.c | 4 ++--
  9. src/syscall.c | 2 +-
  10. src/util.c | 5 ++---
  11. 5 files changed, 7 insertions(+), 8 deletions(-)
  12. diff --git a/src/count.c b/src/count.c
  13. index 2494a44d6..704e3a8d5 100644
  14. --- a/src/count.c
  15. +++ b/src/count.c
  16. @@ -414,7 +414,7 @@ call_summary_pers(FILE *outf)
  17. fprintf(outf, column_fmts[i], (val_), cwidths[c]); \
  18. break
  19. - const char *column_fmts[last_column + 1];
  20. + const char *column_fmts[ARRAY_SIZE(columns)];
  21. for (size_t i = 0; i <= last_column; ++i) {
  22. const size_t c = columns[i];
  23. diff --git a/src/nlattr.c b/src/nlattr.c
  24. index 9944afb8c..1252510a5 100644
  25. --- a/src/nlattr.c
  26. +++ b/src/nlattr.c
  27. @@ -310,7 +310,7 @@ DECL_NLA(hwaddr)
  28. if (len > MAX_ADDR_LEN)
  29. return false;
  30. - uint8_t buf[len];
  31. + uint8_t buf[MAX_ADDR_LEN];
  32. const uintptr_t arphrd = (uintptr_t) opaque_data;
  33. if (!umoven_or_printaddr(tcp, addr, len, buf)) {
  34. diff --git a/src/socketutils.c b/src/socketutils.c
  35. index d3a3b9283..e0079456f 100644
  36. --- a/src/socketutils.c
  37. +++ b/src/socketutils.c
  38. @@ -133,7 +133,7 @@ inet_parse_response(const void *const data, const int data_len,
  39. return -1;
  40. }
  41. - char src_buf[text_size];
  42. + char src_buf[INET6_ADDRSTRLEN];
  43. char *details;
  44. /* open/closing brackets for IPv6 addresses */
  45. @@ -146,7 +146,7 @@ inet_parse_response(const void *const data, const int data_len,
  46. if (diag_msg->id.idiag_dport ||
  47. memcmp(zero_addr, diag_msg->id.idiag_dst, addr_size)) {
  48. - char dst_buf[text_size];
  49. + char dst_buf[INET6_ADDRSTRLEN];
  50. if (!inet_ntop(diag_msg->idiag_family, diag_msg->id.idiag_dst,
  51. dst_buf, text_size))
  52. diff --git a/src/syscall.c b/src/syscall.c
  53. index 1f4d86dc1..84d448253 100644
  54. --- a/src/syscall.c
  55. +++ b/src/syscall.c
  56. @@ -287,7 +287,7 @@ decode_socket_subcall(struct tcb *tcp)
  57. const kernel_ulong_t scno = SYS_socket_subcall + call;
  58. const unsigned int nargs = sysent[scno].nargs;
  59. - uint64_t buf[nargs];
  60. + uint64_t buf[MAX_ARGS];
  61. if (umoven(tcp, tcp->u_arg[1], nargs * current_wordsize, buf) < 0)
  62. return;
  63. diff --git a/src/util.c b/src/util.c
  64. index a88dd008d..eb5896eec 100644
  65. --- a/src/util.c
  66. +++ b/src/util.c
  67. @@ -569,8 +569,7 @@ enum sock_proto
  68. getfdproto(struct tcb *tcp, int fd)
  69. {
  70. #ifdef HAVE_SYS_XATTR_H
  71. - size_t bufsize = 256;
  72. - char buf[bufsize];
  73. + char buf[256];
  74. ssize_t r;
  75. char path[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
  76. @@ -578,7 +577,7 @@ getfdproto(struct tcb *tcp, int fd)
  77. return SOCK_PROTO_UNKNOWN;
  78. xsprintf(path, "/proc/%u/fd/%u", get_proc_pid(tcp->pid), fd);
  79. - r = getxattr(path, "system.sockprotoname", buf, bufsize - 1);
  80. + r = getxattr(path, "system.sockprotoname", buf, sizeof(buf) - 1);
  81. if (r <= 0)
  82. return SOCK_PROTO_UNKNOWN;
  83. else {
  84. --
  85. 2.44.0