Hello!

On Friday 21 August 2009 02:37:44 Stanislav Maslovski wrote:
> То есть, код будет весьма интересно "работать" даже в случае
> числа в третьем аргументе:
> 
> select isinnet( '172.16.1.23', '172.16.1.0', '56' ) например ;-)
>  
> > Следовало бы вернуть NULL, что есть более концептуально верно.
> 
> Концептуально верно будет, имхо, переписать.
Да, проверок входных данных явно не хватало :-) Добавил, заодно код упростил,
а то вложенные if не есть хорошо. Заодно сделал проверку типа данных:

sqlite> select isinnet( '172.16.1.23', '172.16.1.0', 56 );

sqlite> select isinnet( '172.16.1.23', '172.16.1.0', 32 );
0
sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '32' );

sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '255.255.255.0' );
1
sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '255.255.255.255' );
0

Ну и дописал пару-тройку тестов. Новую версию и деб-пакет выложил.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Ответить