[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