diff options
Diffstat (limited to 'tests/tap/process.c')
| -rw-r--r-- | tests/tap/process.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/tests/tap/process.c b/tests/tap/process.c index 8c22324..d9e94d8 100644 --- a/tests/tap/process.c +++ b/tests/tap/process.c @@ -11,11 +11,11 @@   * mkstemp.   *   * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>. + * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.   *   * Written by Russ Allbery <eagle@eyrie.org> - * Copyright 2002, 2004, 2005, 2013 Russ Allbery <eagle@eyrie.org> - * Copyright 2009, 2010, 2011, 2013, 2014 + * Copyright 2002, 2004-2005, 2013, 2016-2017 Russ Allbery <eagle@eyrie.org> + * Copyright 2009-2011, 2013-2014   *     The Board of Trustees of the Leland Stanford Junior University   *   * Permission is hereby granted, free of charge, to any person obtaining a @@ -35,6 +35,8 @@   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER   * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT   */  #include <config.h> @@ -134,6 +136,8 @@ run_child_function(test_function_type function, void *data, int *status,          count = 0;          do {              ret = read(fds[0], buf + count, buflen - count - 1); +            if (SSIZE_MAX - count <= ret) +                bail("maximum output size exceeded in run_child_function");              if (ret > 0)                  count += ret;              if (count >= buflen - 1) { @@ -141,7 +145,7 @@ run_child_function(test_function_type function, void *data, int *status,                  buf = brealloc(buf, buflen);              }          } while (ret > 0); -        buf[count < 0 ? 0 : count] = '\0'; +        buf[count] = '\0';          if (waitpid(child, &rval, 0) == (pid_t) -1)              sysbail("waitpid failed");          close(fds[0]); @@ -364,7 +368,7 @@ process_stop_all(int success UNUSED, int primary)   * Read the PID of a process from a file.  This is necessary when running   * under fakeroot to get the actual PID of the remctld process.   */ -static long +static pid_t  read_pidfile(const char *path)  {      FILE *file; @@ -380,7 +384,7 @@ read_pidfile(const char *path)      pid = strtol(buffer, NULL, 10);      if (pid <= 0)          bail("cannot read PID from %s", path); -    return pid; +    return (pid_t) pid;  }  | 
