commit c10270f60d5b5c805167e48e6a4fe265bdbecc69 from: Christian Weisgerber date: Mon Sep 06 08:45:22 2021 UTC assert against accidentally overflowing argv[] in got_dial_ssh() ok stsp commit - 5e5da8c4bcc83f7737a115b8da52fc3935fe3a6b commit + c10270f60d5b5c805167e48e6a4fe265bdbecc69 blob - 1220c48e7f2ace97395c12e5a3af43b9c0bdc410 blob + 6c0be0af379525b0196b72464d3a886e439077d7 --- lib/dial.c +++ lib/dial.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -30,6 +31,10 @@ #include "got_path.h" #include "got_lib_dial.h" + +#ifndef nitems +#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) +#endif #ifndef ssizeof #define ssizeof(_x) ((ssize_t)(sizeof(_x))) @@ -216,6 +221,7 @@ got_dial_ssh(pid_t *newpid, int *newfd, const char *ho argv[i++] = (char *)cmd; argv[i++] = (char *)path; argv[i++] = NULL; + assert(i <= nitems(argv)); if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pfd) == -1) return got_error_from_errno("socketpair");