From: Tomek Mrugalski Date: Thu, 7 Feb 2013 15:58:41 +0000 (+0100) Subject: [2697] Another fix for empty client-id, this time in MySQL LeaseMgr X-Git-Tag: bind10-1.0.0-rc-release~27^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b5e2be95d21ed750ad7cf5e15de2058aa8bc45f4;p=thirdparty%2Fkea.git [2697] Another fix for empty client-id, this time in MySQL LeaseMgr --- diff --git a/src/lib/dhcpsrv/mysql_lease_mgr.cc b/src/lib/dhcpsrv/mysql_lease_mgr.cc index 292df616ad..6b6cde51d3 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(&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(&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;