[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Purify is your friend.

From: Branko Čibej <brane_at_xbc.nu>
Date: 2001-05-10 00:17:33 CEST

(Strictly speaking, this is an APR problem. But since it blew up in in
fs-test, and the culprit happens to be GregS, I thought y'all might like
to know about it. :-) )

Here's the deal:

apr_strings.h says:

/**
 * duplicate the first n characters of a string into memory allocated
 * out of a pool; the new string will be '\0'-terminated
 * @param p The pool to allocate out of
 * @param s The string to duplicate
 * @param n The number of characters to duplicate
 * @return The new string
 * @deffunc char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)
 */

cvs log apr_strings.c says:

----------------------------
revision 1.10
date: 2001/02/12 02:55:52; author: gstein; state: Exp; lines: +7 -8
*) rename apr_memdup() to apr_pmemdup()
*) optimize the allocation size in apr_pstrndup()

Purify says:

[E] ABR: Array bounds read in strlen {1 occurrence}
        Reading 2 bytes from 0x0292e038 (1 byte at 0x0292e039 illegal)
        Address 0x0292e038 is argument #1 of strlen
        Address 0x0292e038 is at the beginning of a 1 byte block
        Address 0x0292e038 points to a malloc'd block in heap 0x01c10000
        Thread ID: 0x51c
        Error location
            strlen [MSVCRTD.dll]
            apr_pstrndup [apr_strings.c:91]
                    if (s == NULL) {
                        return NULL;
                    }
             => len = strlen(s);
                    if (len < n)
                        n = len;
                    res = apr_palloc(a, n + 1);
            allocate_txn_id [txn-table.c:133]
                  svn_fs__track_dbt (&value, trail->pool);
                
                  /* That's the value we want to return. */
             => next_id_str = apr_pstrndup (trail->pool, value.data, value.size);
                
                  /* Try to parse the value. */
                  {
            svn_fs__create_txn [txn-table.c:171]

Now, you might say that the doc says nothing about apr_pstrndup not
needing a 0-terminated input. To which I reply that indeed, the doc says
nothing about needing a 0-terminated input.

Greg, will you fix it, or shall I? :-)

-- 
Brane �ibej
    home:   <brane_at_xbc.nu>             http://www.xbc.nu/brane/
    work:   <branko.cibej_at_hermes.si>   http://www.hermes-softlab.com/
     ACM:   <brane_at_acm.org>            http://www.acm.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:30 2006

This is an archived mail posted to the Subversion Dev mailing list.