Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
08daa03b
Commit
08daa03b
authored
Oct 24, 2012
by
Stephen Morris
Browse files
[2342] Add check that database name cannot be NULL
parent
39c82ec5
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcp/lease_mgr.h
View file @
08daa03b
...
...
@@ -61,6 +61,13 @@
namespace
isc
{
namespace
dhcp
{
/// @brief Exception thrown if name of database is not specified
class
NoDatabaseName
:
public
Exception
{
public:
NoDatabaseName
(
const
char
*
file
,
size_t
line
,
const
char
*
what
)
:
isc
::
Exception
(
file
,
line
,
what
)
{}
};
/// @brief Exception thrown on failure to open database
class
DbOpenError
:
public
Exception
{
public:
...
...
src/lib/dhcp/mysql_lease_mgr.cc
View file @
08daa03b
...
...
@@ -471,8 +471,8 @@ MySqlLeaseMgr::openDatabase() {
sname
=
getParameter
(
"name"
);
name
=
sname
.
c_str
();
}
catch
(...)
{
// No database name.
Fine, we'll use NULL
;
// No database name.
Throw a "NoName" exception
isc_throw
(
NoDatabaseName
,
"must specified a name for the database"
)
;
}
// Open the database. Use defaults for non-specified options.
...
...
src/lib/dhcp/mysql_lease_mgr.h
View file @
08daa03b
...
...
@@ -45,6 +45,7 @@ public:
/// @param parameters A data structure relating keywords and values
/// concerned with the database.
///
/// @exception NoDatabaseName Mandatory database name not given
/// @exception DbOpenError Error opening the database
/// @exception DbOperationError An operation on the open database has
/// failed.
...
...
@@ -362,6 +363,7 @@ private:
/// Opens the database using the information supplied in the parameters
/// passed to the constructor.
///
/// @exception NoDatabaseName Mandatory database name not given
/// @exception DbOpenError Error opening the database
void
openDatabase
();
...
...
src/lib/dhcp/tests/mysql_lease_mgr_unittest.cc
View file @
08daa03b
...
...
@@ -46,8 +46,41 @@ const char* INVALID_PASSWORD = "password=invalid";
string
connectionString
(
const
char
*
type
,
const
char
*
name
,
const
char
*
host
,
const
char
*
user
,
const
char
*
password
)
{
const
string
space
=
" "
;
return
(
string
(
type
)
+
space
+
string
(
name
)
+
space
+
string
(
host
)
+
space
+
string
(
user
)
+
space
+
string
(
password
));
string
result
=
""
;
if
(
type
!=
NULL
)
{
result
+=
string
(
type
);
}
if
(
name
!=
NULL
)
{
if
(
!
result
.
empty
())
{
result
+=
space
;
}
result
+=
string
(
name
);
}
if
(
host
!=
NULL
)
{
if
(
!
result
.
empty
())
{
result
+=
space
;
}
result
+=
string
(
host
);
}
if
(
user
!=
NULL
)
{
if
(
!
result
.
empty
())
{
result
+=
space
;
}
result
+=
string
(
user
);
}
if
(
password
!=
NULL
)
{
if
(
!
result
.
empty
())
{
result
+=
space
;
}
result
+=
string
(
password
);
}
return
(
result
);
}
// Return valid connection string
...
...
@@ -101,6 +134,9 @@ TEST(MySqlOpenTest, OpenDatabase) {
// Check that wrong specification of backend throws an exception.
// (This is really a check on LeaseMgrFactory, but is convenient to
// perform here.)
EXPECT_THROW
(
LeaseMgrFactory
::
create
(
connectionString
(
NULL
,
VALID_NAME
,
VALID_HOST
,
INVALID_USER
,
VALID_PASSWORD
)),
InvalidParameter
);
EXPECT_THROW
(
LeaseMgrFactory
::
create
(
connectionString
(
INVALID_TYPE
,
VALID_NAME
,
VALID_HOST
,
VALID_USER
,
VALID_PASSWORD
)),
InvalidType
);
...
...
@@ -119,6 +155,11 @@ TEST(MySqlOpenTest, OpenDatabase) {
VALID_TYPE
,
VALID_NAME
,
VALID_HOST
,
VALID_USER
,
INVALID_PASSWORD
)),
DbOpenError
);
// Check for missing parameters
EXPECT_THROW
(
LeaseMgrFactory
::
create
(
connectionString
(
VALID_TYPE
,
NULL
,
VALID_HOST
,
INVALID_USER
,
VALID_PASSWORD
)),
NoDatabaseName
);
// Check that database opens correctly.
ASSERT_NO_THROW
(
LeaseMgrFactory
::
create
(
validConnectionString
()));
EXPECT_NO_THROW
((
void
)
LeaseMgrFactory
::
instance
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment