aboutsummaryrefslogtreecommitdiff
path: root/odb/mysql/statement.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-11-02 10:18:25 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-11-02 10:18:25 +0200
commit1d5d4d47a0d38dc09302f0430008ddc8ad221add (patch)
tree09a42770e5ee68aa412a0211fa39ff5cf3be6388 /odb/mysql/statement.cxx
parent9eb1da8464db999d520b8739282cbe2b28da0432 (diff)
Prevent potential image overwrite in MySQL query result
Diffstat (limited to 'odb/mysql/statement.cxx')
-rw-r--r--odb/mysql/statement.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/odb/mysql/statement.cxx b/odb/mysql/statement.cxx
index 4cd6f35..d4e4943 100644
--- a/odb/mysql/statement.cxx
+++ b/odb/mysql/statement.cxx
@@ -146,7 +146,7 @@ namespace odb
}
select_statement::result select_statement::
- fetch ()
+ fetch (bool next)
{
if (result_version_ != result_.version)
{
@@ -163,6 +163,12 @@ namespace odb
result_version_ = result_.version;
}
+ if (!next && rows_ != 0)
+ {
+ assert (cached_);
+ mysql_stmt_data_seek (stmt_, static_cast<my_ulonglong> (rows_ - 1));
+ }
+
int r (mysql_stmt_fetch (stmt_));
switch (r)