From: Tomek Mrugalski Date: Wed, 24 Jun 2015 12:42:57 +0000 (+0200) Subject: [3918] Changes after review: X-Git-Tag: trac3922_base~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0042a40c931d1237bc4c911b8bf2d90db7818f3;p=thirdparty%2Fkea.git [3918] Changes after review: - filename length is printed if path is too long - unit-test added for too long path --- diff --git a/src/lib/config/command_socket_factory.cc b/src/lib/config/command_socket_factory.cc index a36a8c959c..bc4448be25 100644 --- a/src/lib/config/command_socket_factory.cc +++ b/src/lib/config/command_socket_factory.cc @@ -69,7 +69,8 @@ private: // we need 1 extra byte for terminating 0. if (file_name.size() > sizeof(addr.sun_path) - 1) { isc_throw(SocketError, "Failed to open socket: path specified (" - << file_name << ") is longer than allowed " + << file_name << ") is longer (" << file_name.size() + << " bytes) than allowed " << (sizeof(addr.sun_path) - 1) << " bytes."); } diff --git a/src/lib/config/tests/command_socket_factory_unittests.cc b/src/lib/config/tests/command_socket_factory_unittests.cc index 470aac6047..5e47800361 100644 --- a/src/lib/config/tests/command_socket_factory_unittests.cc +++ b/src/lib/config/tests/command_socket_factory_unittests.cc @@ -60,6 +60,8 @@ public: std::string SOCKET_NAME; }; +// This test verifies that a Unix socket can be opened properly and that input +// parameters (socket-type and socket-name) are verified. TEST_F(CommandSocketFactoryTest, unixCreate) { // Null pointer is obviously a bad idea. EXPECT_THROW(CommandSocketFactory::create(ConstElementPtr()), @@ -88,3 +90,13 @@ TEST_F(CommandSocketFactoryTest, unixCreate) { // It should be possible to close the socket. EXPECT_NO_THROW(sock->close()); } + +// This test checks that when unix path is too long, the socket cannot be opened. +TEST_F(CommandSocketFactoryTest, unixCreateTooLong) { + ElementPtr socket_info = Element::fromJSON("{ \"socket-type\": \"unix\"," + "\"socket-name\": \"/tmp/toolongtoolongtoolongtoolongtoolongtoolong" + "toolongtoolongtoolongtoolongtoolongtoolongtoolongtoolongtoolong" + "\" }"); + + EXPECT_THROW(CommandSocketFactory::create(socket_info), SocketError); +}