Skip to content

Commit 3d34230

Browse files
authored
Merge pull request #2 from gms1/fix/null-pointer-empty-blob
fixed undefined behavior
2 parents e8a03a3 + 70e8673 commit 3d34230

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/statement.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ namespace Values {
5757
Field(_name, SQLITE_BLOB), length(len) {
5858
value = new char[len];
5959
assert(value != nullptr);
60-
memcpy(value, val, len);
60+
if (len > 0) {
61+
memcpy(value, val, len);
62+
}
6163
}
6264
inline virtual ~Blob() override {
6365
delete[] value;

test/blob.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,19 @@ describe('blob', function() {
5151
done();
5252
});
5353
});
54+
55+
it('should be able to select empty blobs', function (done) {
56+
const empty = new sqlite3.Database(':memory:');
57+
empty.serialize(function () {
58+
empty.run("CREATE TABLE files (id INTEGER PRIMARY KEY, data BLOB)");
59+
empty.run("INSERT INTO files (data) VALUES (X'')");
60+
});
61+
empty.get("SELECT data FROM files LIMIT 1", (err, row) => {
62+
if (err) throw err;
63+
assert.ok(Buffer.isBuffer(row.data));
64+
assert.equal(row.data.length, 0);
65+
empty.close(done);
66+
});
67+
});
68+
5469
});

0 commit comments

Comments
 (0)