This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit f1f627aa19c55011975a9fad7e398ef9bcc50eef Author: Bryan Call <[email protected]> AuthorDate: Tue May 7 08:57:26 2024 -0600 Coverity 1518564: Out-of-bounds write in fq_pacing plugin (#11319) (cherry picked from commit 81e1033d1bbedfe874f33572c930878956b496c5) --- plugins/experimental/fq_pacing/fq_pacing.cc | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/plugins/experimental/fq_pacing/fq_pacing.cc b/plugins/experimental/fq_pacing/fq_pacing.cc index 3df2ab59e8..e3437d35be 100644 --- a/plugins/experimental/fq_pacing/fq_pacing.cc +++ b/plugins/experimental/fq_pacing/fq_pacing.cc @@ -26,6 +26,8 @@ #include <ts/remap_version.h> #include <sys/types.h> #include <sys/socket.h> +#include <fcntl.h> +#include <unistd.h> static const char *PLUGIN_NAME = "fq_pacing"; @@ -56,21 +58,21 @@ safe_setsockopt(int s, int level, int optname, char *optval, int optlevel) static int fq_is_default_qdisc() { - TSFile f = nullptr; - ssize_t s = 0; + int fd = -1; + ssize_t bytes = 0; char buffer[5] = {}; int rc = 0; - f = TSfopen("/proc/sys/net/core/default_qdisc", "r"); - if (!f) { + fd = open("/proc/sys/net/core/default_qdisc", O_RDONLY); + if (fd < 0) { return 0; } - s = TSfread(f, buffer, sizeof(buffer) - 1); - if (s > 0) { - buffer[s] = 0; + bytes = read(fd, buffer, sizeof(buffer) - 1); + if (bytes > 0) { + buffer[bytes] = 0; } else { - TSfclose(f); + close(fd); return 0; } @@ -79,7 +81,7 @@ fq_is_default_qdisc() } rc = (strncmp(buffer, "fq", sizeof(buffer)) == 0); - TSfclose(f); + close(fd); return (rc); }
