I noticed code like this in wc_db.c:

  const char *relpath = svn_sqlite__column_text(stmt, 0, NULL);
  svn_kind_t kind = svn_sqlite__column_token(stmt, 1, kind_map);


According to the docs [1], the second _column_*() call can overwrite the value 
returned by the first one, since we passed NULL as the 'result_pool' argument.


Since we haven't run into major breakage, I guess the implementations of SQLite 
we've been using aren't actually overwriting the data in the situations that 
we've been testing... but unless we learn that they definitely won't, we should 
fix this potential error.


If no objections, I'll fix this by passing a pool (scratch_pool, iterpool, 
whatever has sufficient lifetime) instead of NULL, in all places where it is 
unsafe.

- Julian


[1] <http://www.sqlite.org/c3ref/column_blob.html>


--
Certified & Supported Apache Subversion Downloads: 
http://www.wandisco.com/subversion/download

Reply via email to