Skip to content

Commit

Permalink
Merge pull request #2085 from mitza-oci/ace6tao2
Browse files Browse the repository at this point in the history
[ACE 6] ACE_INET_Addr::set errantly succeeds when ACE_LACKS_GETSERVBYNAME
  • Loading branch information
mitza-oci authored Jun 27, 2023
2 parents 40c1d66 + 6995956 commit 5976bf9
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
3 changes: 1 addition & 2 deletions ACE/ace/INET_Addr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,12 +471,11 @@ static int get_port_number_from_name (const char port_name[],
}

// We try to resolve port number from its name.
port_number = -1;
#if defined (ACE_LACKS_GETSERVBYNAME)
port_number = 0;
ACE_UNUSED_ARG (port_name);
ACE_UNUSED_ARG (protocol);
#else
port_number = -1;
servent sentry;
ACE_SERVENT_DATA buf;
servent *sp = ACE_OS::getservbyname_r (port_name,
Expand Down
40 changes: 40 additions & 0 deletions ACE/tests/INET_Addr_Test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,43 @@ static bool test_multiple (void)
return success;
}

static bool test_port_names()
{
bool success = true;

ACE_INET_Addr addr;

#if defined (ACE_LACKS_GETSERVBYNAME)
// Since we don't have getservbyname, the call to set should fail.
// Check that the call does in fact fail.
if (addr.set("telnet") == 0)
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("set with 'telnet' succeeded (expected failure)\n")));
success = false;
}
#else
if (addr.set("telnet") != 0)
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("set with 'telnet' failed (expected success)\n")));
success = false;
}

if (addr != ACE_INET_Addr("0.0.0.0:23"))
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("set with 'telnet' failed to yield correct address\n")));
success = false;
}
#endif /* ACE_LACKS_GETSERVBYNAME */

if (addr.set("not a port name") == 0)
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("set with 'not a port name' succeeded (expected failure)\n")));
success = false;
}

return success;
}

struct Address {
const char* name;
bool loopback;
Expand Down Expand Up @@ -566,6 +603,9 @@ int run_main (int, ACE_TCHAR *[])
status = 1;
}

if (!test_port_names ())
status = 1;

ACE_END_TEST;

return status;
Expand Down

0 comments on commit 5976bf9

Please sign in to comment.