Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler.
Number of rules (primarily dangerous function names) in C/C++ ruleset: 223
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_pipe.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
        std::move(message),
        [pipe, &numRoundTrips, &doneProm, &data, &measurements](
            const Error& error, Message&& message) {
          TP_THROW_ASSERT_IF(error) << error.what();
Parsing failed to find end of parameter list; semicolon terminated it in (
                  std::move(message),
                  [pipe, &numRoundTrips, &doneProm, &data, &measurements](
                      const Error& error, Message&& message) {
                    me
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_transport.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      data.temporary.get(),
      data.size,
      [conn, &numRoundTrips, &doneProm, &data, &measurements](
          const Error& error, const void* ptr, size_t len) {
        TP_THROW_ASSERT_IF(er
Parsing failed to find end of parameter list; semicolon terminated it in (
            data.temporary.get(),
            data.size,
            [conn, &numRoundTrips, &doneProm, &data, &measurements](
                const Error& error, const void* ptr, size_t len) {
     
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/measurements.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/basic/channel.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      buffer.ptr,
      buffer.length,
      eagerCallbackWrapper_(
          [sequenceNumber, callback{std::move(callback)}](
              Impl& impl, const void* /* unused */, size_t /* unused */
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/basic/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/basic/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/basic/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cma/channel.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      nullptr,
      0,
      eagerCallbackWrapper_(
          [sequenceNumber, callback{std::move(callback)}](
              Impl& impl, const void* /* unused */, size_t /* unused */) {
           
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cma/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cma/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cma/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cpu_context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_ipc/channel.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      *nopPacketHolder, lazyCallbackWrapper_([nopPacketHolder](Impl& impl) {
        const Packet& nopPacket = nopPacketHolder->getObject();
        if (nopPacket.is<Reply>()) {
          impl.onRep
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_ipc/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_ipc/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_ipc/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/error.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/error.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/helpers.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/helpers.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/channel.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
        *nopHolderIn, lazyCallbackWrapper_([nopHolderIn](Impl& impl) {
          TP_VLOG(6) << "Channel " << impl.id_
                     << " done reading nop object (server hello)";
          imp
Parsing failed to find end of parameter list; semicolon terminated it in (
        ptr,
        length,
        eagerCallbackWrapper_(
            [&op, laneIdx](
                Impl& impl, const void* /* unused */, size_t /* unused */) {
              TP_VLOG(6) << "Chan
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/context.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      *npHolderIn,
      lazyCallbackWrapper_([npHolderIn,
                            weakConnection{std::weak_ptr<transport::Connection>(
                                connection)}](Impl& impl) 
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/nop_types.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/registry.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/registry.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/channel.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      nullptr,
      0,
      eagerCallbackWrapper_(
          [sequenceNumber, callback{std::move(callback)}](
              Impl& impl, const void* /* unused */, size_t /* unused */) {
           
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/channel.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/address.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/address.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/callback.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/cpu_buffer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/cuda_buffer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/defs.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/error.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/error.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/error_macros.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/memory.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/optional.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/queue.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/socket.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/socket.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/system.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/system.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/buffer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/error.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/error.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/listener.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      *nopHolderIn,
      lazyCallbackWrapper_([nopHolderIn,
                            transport{std::move(transport)},
                            weakConnection{std::weak_ptr<transport::Connecti
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/listener.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/message.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/nop_types.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
        *nopHolderIn, lazyCallbackWrapper_([nopHolderIn](Impl& impl) {
          TP_VLOG(3) << "Pipe " << impl.id_
                     << " done reading nop object (brochure answer)";
          imp
Parsing failed to find end of parameter list; semicolon terminated it in (
        *nopHolderIn, lazyCallbackWrapper_([nopHolderIn](Impl& impl) {
          TP_VLOG(3) << "Pipe " << impl.id_
                     << " done reading nop object (brochure)";
          impl.onRea
Parsing failed to find end of parameter list; semicolon terminated it in (
        payload.data,
        payload.length,
        eagerCallbackWrapper_(
            [&op, payloadIdx](
                Impl& impl, const void* /* unused */, size_t /* unused */) {
             
Parsing failed to find end of parameter list; semicolon terminated it in (
        std::move(tensorBeingAllocated.descriptor),
        tensor.buffer.cpu,
        eagerCallbackWrapper_([&op, tensorIdx](Impl& impl) {
          TP_VLOG(3) << "Pipe " << impl.id_ << " done rece
Parsing failed to find end of parameter list; semicolon terminated it in (
      *nopHolderIn, lazyCallbackWrapper_([&op, nopHolderIn](Impl& impl) {
        TP_VLOG(3) << "Pipe " << impl.id_
                   << " done reading nop object (message descriptor #"
           
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/python/tensorpipe.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
            std::move(tpMessage),
            [callback{std::move(callback)}](
                const tensorpipe::Error& error,
                tensorpipe::Message tpMessage) mutable {
              
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/tensorpipe.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/basic/basic_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/channel_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/channel_test.h
Parsing failed to find end of parameter list; semicolon terminated it in (
      std::move(descriptor),
      buffer,
      [promise{std::move(promise)}](const tensorpipe::Error& error) {
        promise->set_value(error);
      });
  return future;
}

template <typename T
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/channel_test_cpu.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
        descriptor,
        CpuBuffer{data.data(), dataSize},
        [&recvPromise, &mutex](const Error& error) {
          std::unique_lock<std::mutex> calleeLock(mutex);
          recvPromise.set
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/channel_test_cuda.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
        std::move(descriptor),
        CudaBuffer{
            .ptr = ptr,
            .length = kSize,
            .stream = recvStream,
        },
        [recvPromise{std::move(recvPromise)}](con
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/cma/cma_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/cuda_ipc/cuda_ipc_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/mpt/mpt_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/channel/xth/xth_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/common/defs_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/common/system_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc
Parsing failed to find end of parameter list; semicolon terminated it in (
      std::move(message), [&](const Error& error, Message message) {
        if (error) {
          readMessagePromise.set_exception(
              std::make_exception_ptr(std::runtime_error(error.w
Parsing failed to find end of parameter list; semicolon terminated it in (
          std::move(message),
          [&readCompletedProm, &buffers](
              const Error& error, Message message) mutable {
            if (error) {
              ADD_FAILURE() << error.wha
Parsing failed to find end of parameter list; semicolon terminated it in (
                  std::move(message),
                  [&pingCompletedProm, &buffers, &numPingsGoneThrough, i](
                      const Error& error, Message message) {
                    if (
Parsing failed to find end of parameter list; semicolon terminated it in (
          std::move(message),
          [&clientPipe, &pongCompletedProm, &buffers, &numPongsGoneThrough, i](
              const Error& error, Message message) mutable {
            if (error) {
  
Parsing failed to find end of parameter list; semicolon terminated it in (
        std::move(message),
        [fn{std::move(fn)}](const Error& error, Message message) mutable {
          fn(error, std::move(message));
        });
  });
}

TEST(Context, MixedTensorMessage)
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/listener_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/peer_group.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/connection_test.cc
Parsing failed to find end of parameter list; semicolon terminated it in (*holder, [&, conn, holder](const Error& error) {
          ASSERT_FALSE(error) << error.what();
          ASSERT_EQ(object.myIntField, kSize);
          peers_->done(PeerGroup::kServer);
        });

Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/context_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/listener_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/connection_test.cc
Parsing failed to find end of parameter list; semicolon terminated it in (*holder, [&, conn, holder, i](const Error& error) {
            ASSERT_FALSE(error) << error.what();
            ASSERT_EQ(holder->getObject().myStringField.length(), kSize);
            if (i == num
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/loop_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/reactor_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/shm_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/shm_test.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/sockaddr_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/transport_test.h
Parsing failed to find end of parameter list; semicolon terminated it in (
        [fn{std::move(fn)}, mutex, bomb{armBomb()}](
            const tensorpipe::Error& error, const void* ptr, size_t len) {
          std::lock_guard<std::mutex> innerLock(*mutex);
          bom
Parsing failed to find end of parameter list; semicolon terminated it in (
        ptr,
        length,
        [fn{std::move(fn)}, mutex, bomb{armBomb()}](
            const tensorpipe::Error& error, const void* ptr, size_t len) {
          std::lock_guard<std::mutex> inn
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/connection_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/context_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/loop_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/sockaddr_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/uv_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/uv/uv_test.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/shm_ringbuffer_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/shm/segment_test.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.cc
Parsing failed to find end of parameter list; semicolon terminated it in ([&object, fn{std::move(fn)}](
           const Error& error, const void* ptr, size_t len) {
    if (!error) {
      NopReader reader(reinterpret_cast<const uint8_t*>(ptr), len);
      nop::Status<voi
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/defs.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/error.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/error.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/listener.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/registry.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/registry.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/listener.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/listener.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/loop.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/loop.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/reactor.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/reactor.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/sockaddr.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/sockaddr.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/context.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/context.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/error.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/error.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/listener.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/listener.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/loop.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/loop.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/macros.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/sockaddr.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/sockaddr.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/uv.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/uv.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/registry/registry.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/consumer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/producer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/ringbuffer.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/shm.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/shm.h
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/shm/segment.cc
Examining data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/shm/segment.h

FINAL RESULTS:

data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:128:11:  [3] (buffer) getopt_long:
  Some older implementations do not protect against internal buffer overflows
  (CWE-120, CWE-20). Check implementation on installation, or limit the size
  of all string inputs.
    opt = getopt_long(argc, argv, "", long_options, nullptr);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/defs.h:245:25:  [3] (buffer) getenv:
  Environment variables are untrustable input if they can be set by an
  attacker. They can have any content and length, and the same variable can
  be set more than once (CWE-807, CWE-20). Check environment variables
  carefully before using them.
  char* levelStr = std::getenv("TP_VERBOSE_LOGGING");
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:155:33:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.numRoundTrips = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:158:31:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.numPayloads = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:161:31:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.payloadSize = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:164:30:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.numTensors = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:167:30:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.tensorSize = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:170:32:  [2] (integer) atoi:
  Unless checked, the resulting number can exceed the expected range
  (CWE-190). If source untrusted, check both minimum and maximum, even if the
  input had no minus sign (large numbers can roll over into negative number;
  consider saving to an unsigned value if that is intended).
        options.metadataSize = atoi(optarg);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/context.cc:233:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(request.localPtr, request.remotePtr, request.length);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:88:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(begin, ptr1_, len1_);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:97:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(begin, ptr1_, size);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:157:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(ptr1_, begin, len1_);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:166:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(ptr1_, begin, size);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/sockaddr.cc:43:8:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  std::memcpy(&addr_, addr, addrlen);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/sockaddr.h:32:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
    std::memcpy(&addr_, addr, addrlen);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/consumer.h:159:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(buffer, buffers[0].ptr, buffers[0].len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/consumer.h:162:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(buffer, buffers[0].ptr, buffers[0].len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/consumer.h:163:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/producer.h:163:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(buffers[0].ptr, buffer, buffers[0].len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/producer.h:166:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(buffers[0].ptr, buffer, buffers[0].len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/producer.h:167:12:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      std::memcpy(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/shm/segment.cc:36:14:  [2] (misc) open:
  Check when opening files - can an attacker redirect it (via symlinks),
  force the opening of special file type (e.g., device files), move things
  around to create a race condition, control its ancestors, or change its
  contents? (CWE-362).
  int fd = ::open(kBasePath, flags, 0);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_pipe.cc:111:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    pipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_pipe.cc:288:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
              pipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_transport.cc:67:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  conn->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/benchmark_transport.cc:134:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        conn->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:138:44:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
        options.mode = std::string(optarg, strlen(optarg));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:146:49:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
        options.transport = std::string(optarg, strlen(optarg));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:149:47:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
        options.channel = std::string(optarg, strlen(optarg));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/benchmark/options.cc:152:47:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
        options.address = std::string(optarg, strlen(optarg));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/basic/channel.cc:243:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cma/channel.cc:212:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/cuda_ipc/channel.cc:453:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/helpers.cc:34:37:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  nop::Status<void> status = object.read(reader);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/channel.cc:207:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/channel.cc:509:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    lanes_[laneIdx]->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/mpt/context.cc:313:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/channel/xth/channel.cc:198:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.cc:25:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
ssize_t Fd::read(void* buf, size_t count) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.cc:28:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    rv = ::read(fd_, buf, count);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.cc:52:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  auto rv = read(buf, count);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.h:51:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ssize_t read(void* buf, size_t count);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/fd.h:86:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  Error read(T* t) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:203:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  virtual nop::Status<void> read(NopReader& reader) = 0;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/common/nop.h:226:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  nop::Status<void> read(NopReader& reader) override {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/listener.cc:392:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:219:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(Message, read_callback_fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:498:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:509:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:583:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Pipe::read(Message message, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:584:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(std::move(message), std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:587:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Pipe::Impl::read(Message message, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:656:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.cc:1052:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  connection_->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/core/pipe.h:74:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(Message, read_callback_fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/python/tensorpipe.cc:367:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        pipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc:198:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  serverPipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc:266:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      serverPipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc:367:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
              serverPipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc:411:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      clientPipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/core/context_test.cc:465:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    pipe->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/peer_group.h:110:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ret = read(pipefd_[receiverId][kReadEnd], &len, sizeof(len));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/peer_group.h:115:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ret = read(pipefd_[receiverId][kReadEnd], &str[0], len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/connection_test.cc:109:15:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        conn->read(*holder, [&, conn, holder](const Error& error) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/shm/connection_test.cc:153:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          conn->read(*holder, [&, conn, holder, i](const Error& error) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/transport_test.h:115:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    conn->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/transport/transport_test.h:133:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    conn->read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc:88:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ssize_t ret = c.read(&r, sizeof(r));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc:94:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ssize_t ret = c.read(&r, sizeof(r));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc:106:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ssize_t ret = c.read(&r, sizeof(r));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc:231:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ret = c.read(&cr, sizeof(cr));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/ringbuffer_test.cc:243:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ret = c.read(&nr, sizeof(nr));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/shm_ringbuffer_test.cc:69:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      ssize_t ret = cons.read(&value, sizeof(value));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/shm_ringbuffer_test.cc:130:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        ::read(event_fd, &c, sizeof(uint64_t));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/ringbuffer/shm_ringbuffer_test.cc:159:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    ssize_t ret = cons.read(&value, sizeof(value));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/test/util/shm/segment_test.cc:103:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        ::read(event_fd, &c, sizeof(uint64_t));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.cc:16:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(AbstractNopHolder& object, read_nop_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.cc:17:3:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  read([&object, fn{std::move(fn)}](
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.cc:21:41:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      nop::Status<void> status = object.read(reader);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.h:24:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  virtual void read(read_callback_fn fn) = 0;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.h:26:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  virtual void read(void* ptr, size_t length, read_callback_fn fn) = 0;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/connection.h:46:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  virtual void read(AbstractNopHolder& object, read_nop_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:198:42:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  nop::Status<void> status = nopObject_->read(reader);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:325:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(read_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:326:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(AbstractNopHolder& object, read_nop_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:327:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(void* ptr, size_t length, read_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:559:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:560:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:563:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::Impl::read(read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:601:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(AbstractNopHolder& object, read_nop_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:602:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(object, std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:605:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::Impl::read(
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:651:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(void* ptr, size_t length, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:652:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(ptr, length, std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.cc:655:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::Impl::read(void* ptr, size_t length, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.h:48:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(read_callback_fn fn) override;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.h:49:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(AbstractNopHolder& object, read_nop_callback_fn fn) override;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/connection.h:50:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(void* ptr, size_t length, read_callback_fn fn) override;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/loop.cc:161:26:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      auto rv = eventFd_.read(reinterpret_cast<void*>(&val), sizeof(val));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/reactor.cc:115:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    auto ret = reactorConsumer.read(&token, sizeof(token));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/shm/sockaddr.cc:29:8:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
  std::strncpy(&sun.sun_path[offset], name.c_str(), len);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:209:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(read_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:210:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(void* ptr, size_t length, read_callback_fn fn);
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:563:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:564:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:567:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::Impl::read(read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:574:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::read(void* ptr, size_t length, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:575:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  impl_->read(ptr, length, std::move(fn));
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.cc:578:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Connection::Impl::read(void* ptr, size_t length, read_callback_fn fn) {
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.h:47:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(read_callback_fn fn) override;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/transport/uv/connection.h:48:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(void* ptr, size_t length, read_callback_fn fn) override;
data/tensorpipe-0.0~git20200928.95ff931/tensorpipe/util/ringbuffer/consumer.h:181:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  [[nodiscard]] ssize_t read(void* buffer, const size_t size) noexcept {

ANALYSIS SUMMARY:

Hits = 112
Lines analyzed = 23155 in approximately 0.51 seconds (45154 lines/second)
Physical Source Lines of Code (SLOC) = 16000
Hits@level = [0]  61 [1]  90 [2]  20 [3]   2 [4]   0 [5]   0
Hits@level+ = [0+] 173 [1+] 112 [2+]  22 [3+]   2 [4+]   0 [5+]   0
Hits/KSLOC@level+ = [0+] 10.8125 [1+]   7 [2+] 1.375 [3+] 0.125 [4+]   0 [5+]   0
Dot directories skipped = 2 (--followdotdir overrides)
Minimum risk level = 1
Not every hit is necessarily a security vulnerability.
There may be other security vulnerabilities; review your code!
See 'Secure Programming HOWTO'
(https://dwheeler.com/secure-programs) for more information.