[med-svn] [r-cran-rsqlite] 01/03: New upstream version 1.1-1

Andreas Tille tille at debian.org
Mon Dec 12 21:47:04 UTC 2016


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository r-cran-rsqlite.

commit cffd835e408e6d689dd815a63390ef7067ea7566
Author: Andreas Tille <tille at debian.org>
Date:   Mon Dec 12 22:39:43 2016 +0100

    New upstream version 1.1-1
---
 DESCRIPTION                |  8 ++++----
 MD5                        | 11 ++++++-----
 NEWS.md                    |  7 ++++++-
 inst/doc/RSQLite.html      | 20 +++++++-------------
 src/SqliteDataFrame.cpp    |  8 ++++++--
 src/SqliteDataFrame.h      |  2 +-
 tests/testthat/test-blob.R | 10 ++++++++++
 7 files changed, 40 insertions(+), 26 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 861108b..636bca9 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: RSQLite
-Version: 1.1
-Date: 2016-11-24
+Version: 1.1-1
+Date: 2016-12-10
 Title: 'SQLite' Interface for R
 Authors at R: c(
     person("Kirill", "Müller", role = c("aut", "cre"), email = "krlmlr+r at mailbox.org"),
@@ -30,7 +30,7 @@ Collate: 'RcppExports.R' 'SQLiteConnection.R' 'SQLiteDriver.R'
 VignetteBuilder: knitr
 RoxygenNote: 5.0.1.9000
 NeedsCompilation: yes
-Packaged: 2016-11-25 14:49:05 UTC; muelleki
+Packaged: 2016-12-10 13:38:36 UTC; muelleki
 Author: Kirill Müller [aut, cre],
   Hadley Wickham [aut],
   David A. James [aut],
@@ -41,4 +41,4 @@ Author: Kirill Müller [aut, cre],
   RStudio [cph]
 Maintainer: Kirill Müller <krlmlr+r at mailbox.org>
 Repository: CRAN
-Date/Publication: 2016-11-27 16:31:52
+Date/Publication: 2016-12-10 23:13:44
diff --git a/MD5 b/MD5
index 69cbe76..4238ae7 100644
--- a/MD5
+++ b/MD5
@@ -1,6 +1,6 @@
-6b7e10d9f310463569caed0cc039285a *DESCRIPTION
+110ed6642069470b39038128b93a6bba *DESCRIPTION
 5b447ee7ea82128e5e84f7d0ce95a1a7 *NAMESPACE
-464df70e1e0408208ccd2712b05b5902 *NEWS.md
+b85c9b0092f1f8b85f5f79d89d6f00ec *NEWS.md
 c15ee8d6d02f96ad33ce3e94a4b6c2bb *R/RcppExports.R
 e32bdff52325c7022e0a2a8ccec1bb3e *R/SQLiteConnection.R
 9c1a0cd57d6167ce40aad1594766a7ec *R/SQLiteDriver.R
@@ -22,7 +22,7 @@ b114d50cf8fa6344f59229013182e3c2 *R/query.R
 6a6016ed370b49203dbc6e2c3f9160d3 *inst/db/datasets.sqlite
 64c49c15bffe33bd5d1c1dcc17bb7ef3 *inst/doc/RSQLite.R
 1d1168e86dce56588a7f3f8164bd745d *inst/doc/RSQLite.Rmd
-e2109838ac145a2a57943302863f2b3b *inst/doc/RSQLite.html
+153d77aa3a094af3c4448444d7f47f86 *inst/doc/RSQLite.html
 f847d86acc42d042b1d17914ba06f4b7 *man/SQLite.Rd
 c8ee88b21828631ff2f92c630678f07d *man/SQLiteConnection-class.Rd
 97a4eef2c56e01a864b58aa42136097f *man/SQLiteDriver-class.Rd
@@ -57,8 +57,8 @@ e61282b791761bc3f5dd1e3a2f94202a *src/RSQLite.h
 4588566f59dde67bbbf252411ef47019 *src/RcppExports.cpp
 b7fa5ddb2e8810ce977b971a9fc28124 *src/SqliteConnection.cpp
 40d6d47d2fb85d33a9188d82a390889d *src/SqliteConnection.h
-466418351fbdc85202e429184a16ae42 *src/SqliteDataFrame.cpp
-2fc081b9cfd4531a7203771c2a5b99f6 *src/SqliteDataFrame.h
+3111cdeba9d8f458738d20ee960c2268 *src/SqliteDataFrame.cpp
+7a0317b200ce6981ed5177fae9ce33bc *src/SqliteDataFrame.h
 56712bfcbacb448a6349db5e78415821 *src/SqliteResult.cpp
 3031c87bb921fb380e1674b6aa5f7958 *src/SqliteResult.h
 c3a9b8e59b4c1bae79e15b749d9865eb *src/SqliteResultImpl.cpp
@@ -87,6 +87,7 @@ e12c53bdd0c770bb653bccf292c32dfa *tests/testthat/helper-astyle.R
 3c1b90de2ec214764a3bcdbbf290639c *tests/testthat/test-affinity.R
 b0fe240202730cff80dde6ab7cabb2e8 *tests/testthat/test-astyle.R
 1107b6f69131fc566c88e937f7a13a1a *tests/testthat/test-basic-types.R
+f876868df2f30d2b6199065aae0568ce *tests/testthat/test-blob.R
 0e9afd502298f4e23b02806f4d71eb90 *tests/testthat/test-data-type.R
 ad3f99cc3a64c858303503df39e31581 *tests/testthat/test-dbClearResult.R
 8887b6200c287f8516c023ecf4e985d9 *tests/testthat/test-dbConnect.R
diff --git a/NEWS.md b/NEWS.md
index 2e21bd9..d69bb04 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,8 @@
+## RSQLite 1.1-1 (2016-12-10)
+
+- Fix protection issue that could lead to memory access errors when fetching `BLOB` data (#192, #194, @MikeBadescu).
+
+
 # RSQLite 1.1 (2016-11-25)
 
 - New maintainer: Kirill Müller.
@@ -149,7 +154,7 @@
 
 - Differential reverse dependency checks.
 
-- Added upgrade script for sqlite3 sources to the `src-raw` directory.
+- Added upgrade script for sqlite3 sources and creation script for the datasets database to the `data-raw` directory.
 
 
 # Version 1.0.0
diff --git a/inst/doc/RSQLite.html b/inst/doc/RSQLite.html
index 9ef7bd4..ccf36df 100644
--- a/inst/doc/RSQLite.html
+++ b/inst/doc/RSQLite.html
@@ -12,7 +12,7 @@
 
 <meta name="author" content="Hadley Wickham" />
 
-<meta name="date" content="2016-11-25" />
+<meta name="date" content="2016-12-10" />
 
 <title>RSQLite</title>
 
@@ -70,7 +70,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
 
 <h1 class="title toc-ignore">RSQLite</h1>
 <h4 class="author"><em>Hadley Wickham</em></h4>
-<h4 class="date"><em>2016-11-25</em></h4>
+<h4 class="date"><em>2016-12-10</em></h4>
 
 
 
@@ -82,12 +82,10 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
 <p>To create a new SQLite database, you simply supply the filename to <code>dbConnect()</code>:</p>
 <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mydb <-<span class="st"> </span><span class="kw">dbConnect</span>(RSQLite::<span class="kw">SQLite</span>(), <span class="st">"my-db.sqlite"</span>)
 <span class="kw">dbDisconnect</span>(mydb)
-<span class="co">#> [1] TRUE</span>
 <span class="kw">unlink</span>(<span class="st">"my-db.sqlite"</span>)</code></pre></div>
 <p>If you just need a temporary database, use either <code>""</code> (for an on-disk database) or <code>":memory:"</code> or <code>"file::memory:"</code> (for a in-memory database). This database will be automatically deleted when you disconnect from it.</p>
 <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mydb <-<span class="st"> </span><span class="kw">dbConnect</span>(RSQLite::<span class="kw">SQLite</span>(), <span class="st">""</span>)
-<span class="kw">dbDisconnect</span>(mydb)
-<span class="co">#> [1] TRUE</span></code></pre></div>
+<span class="kw">dbDisconnect</span>(mydb)</code></pre></div>
 </div>
 <div id="loading-data" class="section level2">
 <h2>Loading data</h2>
@@ -141,8 +139,7 @@ while (!<span class="kw">dbHasCompleted</span>(rs)) {
 <span class="co">#> [1] 10</span>
 <span class="co">#> [1] 10</span>
 <span class="co">#> [1] 2</span>
-<span class="kw">dbClearResult</span>(rs)
-<span class="co">#> [1] TRUE</span></code></pre></div>
+<span class="kw">dbClearResult</span>(rs)</code></pre></div>
 </div>
 <div id="multiple-parameterised-queries" class="section level2">
 <h2>Multiple parameterised queries</h2>
@@ -154,15 +151,13 @@ while (!<span class="kw">dbHasCompleted</span>(rs)) {
 <span class="kw">dbBind</span>(rs, <span class="dt">param =</span> <span class="kw">list</span>(<span class="dt">x =</span> <span class="dv">4</span>))
 <span class="kw">nrow</span>(<span class="kw">dbFetch</span>(rs))
 <span class="co">#> [1] 0</span>
-<span class="kw">dbClearResult</span>(rs)
-<span class="co">#> [1] TRUE</span></code></pre></div>
+<span class="kw">dbClearResult</span>(rs)</code></pre></div>
 <p>You can also pass multiple parameters in one call to <code>dbBind()</code>:</p>
 <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">rs <-<span class="st"> </span><span class="kw">dbSendQuery</span>(mydb, <span class="st">'SELECT * FROM iris WHERE "Sepal.Length" = :x'</span>)
 <span class="kw">dbBind</span>(rs, <span class="dt">param =</span> <span class="kw">list</span>(<span class="dt">x =</span> <span class="kw">seq</span>(<span class="dv">4</span>, <span class="fl">4.4</span>, <span class="dt">by =</span> <span class="fl">0.1</span>)))
 <span class="kw">nrow</span>(<span class="kw">dbFetch</span>(rs))
 <span class="co">#> [1] 4</span>
-<span class="kw">dbClearResult</span>(rs)
-<span class="co">#> [1] TRUE</span></code></pre></div>
+<span class="kw">dbClearResult</span>(rs)</code></pre></div>
 </div>
 <div id="statements" class="section level2">
 <h2>Statements</h2>
@@ -173,8 +168,7 @@ rs <-<span class="st"> </span><span class="kw">dbSendStatement</span>(mydb, <
 <span class="kw">dbBind</span>(rs, <span class="dt">param =</span> <span class="kw">list</span>(<span class="dt">x =</span> <span class="fl">4.5</span>))
 <span class="kw">dbGetRowsAffected</span>(rs)
 <span class="co">#> [1] 4</span>
-<span class="kw">dbClearResult</span>(rs)
-<span class="co">#> [1] TRUE</span></code></pre></div>
+<span class="kw">dbClearResult</span>(rs)</code></pre></div>
 </div>
 
 
diff --git a/src/SqliteDataFrame.cpp b/src/SqliteDataFrame.cpp
index 38bb905..c055b8e 100644
--- a/src/SqliteDataFrame.cpp
+++ b/src/SqliteDataFrame.cpp
@@ -32,7 +32,7 @@ bool SqliteDataFrame::set_col_values() {
   }
 
   for (int j = 0; j < out.length(); ++j) {
-    SEXP col = out[j];
+    RObject col = out[j];
     set_col_value(col, j);
     out[j] = col;
   }
@@ -77,7 +77,11 @@ void SqliteDataFrame::alloc_missing_cols() {
   }
 }
 
-void SqliteDataFrame::set_col_value(SEXP& col, const int j) {
+void SqliteDataFrame::set_col_value(RObject& col, const int j) {
+  // col needs to be PROTECTed because it can be allocated
+  // just before a RAW vector that holds BLOB data is (#192).
+  // The easiest way to protect is to make it an RObject.
+
   SEXPTYPE type = types[j];
   int column_type = sqlite3_column_type(stmt, j);
 
diff --git a/src/SqliteDataFrame.h b/src/SqliteDataFrame.h
index c6317a1..b2a3041 100644
--- a/src/SqliteDataFrame.h
+++ b/src/SqliteDataFrame.h
@@ -24,7 +24,7 @@ public:
   List get_data(std::vector<SEXPTYPE>& types);
 
 private:
-  void set_col_value(SEXP& col, const int j);
+  void set_col_value(RObject& col, const int j);
   void finalize_cols();
 
   void alloc_missing_cols();
diff --git a/tests/testthat/test-blob.R b/tests/testthat/test-blob.R
new file mode 100644
index 0000000..fbd78af
--- /dev/null
+++ b/tests/testthat/test-blob.R
@@ -0,0 +1,10 @@
+context("blob")
+
+test_that("adding large blob to table survives valgrind check (#192)", {
+  con <- dbConnect(SQLite())
+  on.exit(dbDisconnect(con), add = TRUE)
+
+  data <- data.frame(id = 1, data = I(list(raw(1e8))))
+  dbWriteTable(con, "data", data)
+  dbReadTable(con, "data")
+})

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/r-cran-rsqlite.git



More information about the debian-med-commit mailing list