Kezhu Wang created ZOOKEEPER-4848:
-------------------------------------

             Summary: Possible stack overflow in setup_random
                 Key: ZOOKEEPER-4848
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4848
             Project: ZooKeeper
          Issue Type: Bug
          Components: c client
    Affects Versions: 3.9.2, 3.8.4
            Reporter: Kezhu Wang


Created for https://github.com/apache/zookeeper/pull/2097.

{code:c}
        int seed_len = 0;
        /* Enter a loop to fill in seed with random data from /dev/urandom.
         * This is done in a loop so that we can safely handle short reads
         * which can happen due to signal interruptions.
         */
        while (seed_len < sizeof(seed)) {
            /* Assert we either read something or we were interrupted due to a
             * signal (errno == EINTR) in which case we need to retry.
             */
            int rc = read(fd, &seed + seed_len, sizeof(seed) - seed_len);
            assert(rc > 0 || errno == EINTR);
            if (rc > 0) {
                seed_len += rc;
            }
        }
{code}

Above code will overflow {{seed}} in case of a short read.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to