BIND 10 trac2697, updated. b5e2be95d21ed750ad7cf5e15de2058aa8bc45f4 [2697] Another fix for empty client-id, this time in MySQL LeaseMgr

BIND 10 source code commits bind10-changes at lists.isc.org
Thu Feb 7 15:58:51 UTC 2013


The branch, trac2697 has been updated
       via  b5e2be95d21ed750ad7cf5e15de2058aa8bc45f4 (commit)
      from  1d6a2e3fb2715b445ce835847d7d353886495fea (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b5e2be95d21ed750ad7cf5e15de2058aa8bc45f4
Author: Tomek Mrugalski <tomasz at isc.org>
Date:   Thu Feb 7 16:58:41 2013 +0100

    [2697] Another fix for empty client-id, this time in MySQL LeaseMgr

-----------------------------------------------------------------------

Summary of changes:
 src/lib/dhcpsrv/mysql_lease_mgr.cc |   25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/dhcpsrv/mysql_lease_mgr.cc b/src/lib/dhcpsrv/mysql_lease_mgr.cc
index 292df61..6b6cde5 100644
--- a/src/lib/dhcpsrv/mysql_lease_mgr.cc
+++ b/src/lib/dhcpsrv/mysql_lease_mgr.cc
@@ -338,12 +338,25 @@ public:
         bind_[1].length = &hwaddr_length_;
 
         // client_id: varbinary(128)
-        client_id_ = lease_->client_id_->getClientId();
-        client_id_length_ = client_id_.size();
-        bind_[2].buffer_type = MYSQL_TYPE_BLOB;
-        bind_[2].buffer = reinterpret_cast<char*>(&client_id_[0]);
-        bind_[2].buffer_length = client_id_length_;
-        bind_[2].length = &client_id_length_;
+        if (lease_->client_id_) {
+            client_id_ = lease_->client_id_->getClientId();
+            client_id_length_ = client_id_.size();
+            bind_[2].buffer_type = MYSQL_TYPE_BLOB;
+            bind_[2].buffer = reinterpret_cast<char*>(&client_id_[0]);
+            bind_[2].buffer_length = client_id_length_;
+            bind_[2].length = &client_id_length_;
+        } else {
+            bind_[2].buffer_type = MYSQL_TYPE_NULL;
+
+            // According to http://dev.mysql.com/doc/refman/5.5/en/
+            // c-api-prepared-statement-data-structures.html, the other
+            // fields doesn't matter if type is set to MYSQL_TYPE_NULL,
+            // but let's set them to some sane values in case earlier versions
+            // didn't have that assumption.
+            static my_bool no_clientid = MLM_TRUE;
+            bind_[2].buffer = NULL;
+            bind_[2].is_null = &no_clientid;
+        }
 
         // valid lifetime: unsigned int
         bind_[3].buffer_type = MYSQL_TYPE_LONG;



More information about the bind10-changes mailing list