host: Ignore spaces around - when parsing ranges
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2006-2012 Tobias Brunner
|
* Copyright (C) 2006-2014 Tobias Brunner
|
||||||
* Copyright (C) 2006 Daniel Roethlisberger
|
* Copyright (C) 2006 Daniel Roethlisberger
|
||||||
* Copyright (C) 2005-2006 Martin Willi
|
* Copyright (C) 2005-2006 Martin Willi
|
||||||
* Copyright (C) 2005 Jan Hutter
|
* Copyright (C) 2005 Jan Hutter
|
||||||
@@ -530,19 +530,27 @@ host_t *host_create_from_chunk(int family, chunk_t address, u_int16_t port)
|
|||||||
*/
|
*/
|
||||||
bool host_create_from_range(char *string, host_t **from, host_t **to)
|
bool host_create_from_range(char *string, host_t **from, host_t **to)
|
||||||
{
|
{
|
||||||
char *pos;
|
char *sep, *pos;
|
||||||
|
|
||||||
pos = strchr(string, '-');
|
sep = strchr(string, '-');
|
||||||
if (!pos)
|
if (!sep)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
*to = host_create_from_string(pos + 1, 0);
|
for (pos = sep+1; *pos && *pos == ' '; pos++)
|
||||||
|
{
|
||||||
|
/* trim spaces before to address*/
|
||||||
|
}
|
||||||
|
*to = host_create_from_string(pos, 0);
|
||||||
if (!*to)
|
if (!*to)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
pos = strndup(string, pos - string);
|
for (pos = sep-1; pos > string && *pos == ' '; pos--)
|
||||||
|
{
|
||||||
|
/* trim spaces behind from address */
|
||||||
|
}
|
||||||
|
pos = strndup(string, pos - string + 1);
|
||||||
*from = host_create_from_string_and_family(pos, (*to)->get_family(*to), 0);
|
*from = host_create_from_string_and_family(pos, (*to)->get_family(*to), 0);
|
||||||
free(pos);
|
free(pos);
|
||||||
if (!*from)
|
if (!*from)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2006-2009 Tobias Brunner
|
* Copyright (C) 2006-2014 Tobias Brunner
|
||||||
* Copyright (C) 2006 Daniel Roethlisberger
|
* Copyright (C) 2006 Daniel Roethlisberger
|
||||||
* Copyright (C) 2005-2008 Martin Willi
|
* Copyright (C) 2005-2008 Martin Willi
|
||||||
* Copyright (C) 2005 Jan Hutter
|
* Copyright (C) 2005 Jan Hutter
|
||||||
|
|||||||
@@ -438,14 +438,17 @@ START_TEST(test_create_from_range_v4)
|
|||||||
|
|
||||||
verify_range("192.168.0.1-192.168.0.1", AF_INET, addr_v4, addr_v4);
|
verify_range("192.168.0.1-192.168.0.1", AF_INET, addr_v4, addr_v4);
|
||||||
verify_range("192.168.0.1-192.168.0.5", AF_INET, addr_v4, addr_v4_to);
|
verify_range("192.168.0.1-192.168.0.5", AF_INET, addr_v4, addr_v4_to);
|
||||||
|
verify_range("192.168.0.1- 192.168.0.5", AF_INET, addr_v4, addr_v4_to);
|
||||||
|
verify_range("192.168.0.1 -192.168.0.5", AF_INET, addr_v4, addr_v4_to);
|
||||||
|
verify_range("192.168.0.1 - 192.168.0.5", AF_INET, addr_v4, addr_v4_to);
|
||||||
verify_range("192.168.0.5-192.168.0.1", AF_INET, addr_v4_to, addr_v4);
|
verify_range("192.168.0.5-192.168.0.1", AF_INET, addr_v4_to, addr_v4);
|
||||||
|
|
||||||
verify_range("192.168.0.1", 0, chunk_empty, chunk_empty);
|
verify_range("192.168.0.1", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("192.168.0.1-", 0, chunk_empty, chunk_empty);
|
verify_range("192.168.0.1-", 0, chunk_empty, chunk_empty);
|
||||||
|
verify_range("-192.168.0.1", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("192.168.0.1-192", 0, chunk_empty, chunk_empty);
|
verify_range("192.168.0.1-192", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("192.168.0.1-192.168", 0, chunk_empty, chunk_empty);
|
verify_range("192.168.0.1-192.168", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("192.168.0.1-192.168.0", 0, chunk_empty, chunk_empty);
|
verify_range("192.168.0.1-192.168.0", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("192.168.0.1 - 192.168.0.5", 0, chunk_empty, chunk_empty);
|
|
||||||
verify_range("foo.b.a.r", 0, chunk_empty, chunk_empty);
|
verify_range("foo.b.a.r", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("foo.b.a.r-b.a.r.f", 0, chunk_empty, chunk_empty);
|
verify_range("foo.b.a.r-b.a.r.f", 0, chunk_empty, chunk_empty);
|
||||||
}
|
}
|
||||||
@@ -463,12 +466,15 @@ START_TEST(test_create_from_range_v6)
|
|||||||
|
|
||||||
verify_range("fec1::1-fec1::1", AF_INET6, addr_v6, addr_v6);
|
verify_range("fec1::1-fec1::1", AF_INET6, addr_v6, addr_v6);
|
||||||
verify_range("fec1::1-fec1::5", AF_INET6, addr_v6, addr_v6_to);
|
verify_range("fec1::1-fec1::5", AF_INET6, addr_v6, addr_v6_to);
|
||||||
|
verify_range("fec1::1- fec1::5", AF_INET6, addr_v6, addr_v6_to);
|
||||||
|
verify_range("fec1::1 -fec1::5", AF_INET6, addr_v6, addr_v6_to);
|
||||||
|
verify_range("fec1::1 - fec1::5", AF_INET6, addr_v6, addr_v6_to);
|
||||||
verify_range("fec1::5-fec1::1", AF_INET6, addr_v6_to, addr_v6);
|
verify_range("fec1::5-fec1::1", AF_INET6, addr_v6_to, addr_v6);
|
||||||
|
|
||||||
verify_range("fec1::1", 0, chunk_empty, chunk_empty);
|
verify_range("fec1::1", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("fec1::1-", 0, chunk_empty, chunk_empty);
|
verify_range("fec1::1-", 0, chunk_empty, chunk_empty);
|
||||||
|
verify_range("-fec1::1", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("fec1::1-fec1", 0, chunk_empty, chunk_empty);
|
verify_range("fec1::1-fec1", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("fec1::1 - fec1::5", 0, chunk_empty, chunk_empty);
|
|
||||||
verify_range("foo::bar", 0, chunk_empty, chunk_empty);
|
verify_range("foo::bar", 0, chunk_empty, chunk_empty);
|
||||||
verify_range("foo::bar-bar::foo", 0, chunk_empty, chunk_empty);
|
verify_range("foo::bar-bar::foo", 0, chunk_empty, chunk_empty);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user