Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
ISC Open Source Projects
Kea
Commits
08daa03b
Commit
08daa03b
authored
Oct 24, 2012
by
Stephen Morris
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2342] Add check that database name cannot be NULL
parent
39c82ec5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
54 additions
and
4 deletions
+54
-4
src/lib/dhcp/lease_mgr.h
src/lib/dhcp/lease_mgr.h
+7
-0
src/lib/dhcp/mysql_lease_mgr.cc
src/lib/dhcp/mysql_lease_mgr.cc
+2
-2
src/lib/dhcp/mysql_lease_mgr.h
src/lib/dhcp/mysql_lease_mgr.h
+2
-0
src/lib/dhcp/tests/mysql_lease_mgr_unittest.cc
src/lib/dhcp/tests/mysql_lease_mgr_unittest.cc
+43
-2
No files found.
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