ipfw table IPFW_TABLES_MAX

Dan Lukes dan at obluda.cz
Wed Mar 22 12:20:50 CET 2006


VUlik at cz.soluziona.com napsal/wrote, On 03/22/06 10:04:
> Narazil jsem na limit u tabulek IPFW. Defaultni hodnota je 128. Hledal
> jsem, hledal a v souboru ip_fw2.c nalezl definici hodnoty IPFW_TABLES_MAX
> 128. Ale protoze nemam testovaci zelezo, na kterem bych otestoval zmenu a
> nechce se mi to prilis zkouset na ostrem, zkousim se nejdrive doptat,
> zda-li jste to nekdo uz nezkousel hacknout,popr. nejsou-li tam jine
> zavislosti....

	To mate tak. Na vetsine mist se cislo tabulky uklada jako uint16_t. 
Vyjimkou je sysctl IP_FW_TABLE_GETSIZE (a na nej navazujici funkce 
count_table) kde je cislo tabulky uint32_t. Druhou vyjimkou je interni 
funkce init_tables, kde jen jedna ze dvou promennych je  ocekavatelneho 
typu uint16_t, zatim co druha je, buh vi proc, typu int.

	Zda se tedy, ze bezpecna maximalni hodnota pro IPFW_TABLES_MAX je 
takova, ktera se vejde do vsech trech dotcenych typu promennych. Protoze 
jiste plati, ze cokoliv se vejde do uint_32 se vejde i do uint16, da se 
podminka zjednodusit tak, ze nejvyssi jeste fungujici hodnota bude 
maximum z 65535 a MAXINT.

	IPFW program sam pri parsingu kontroluje, ze cislo tabulky je ostre 
mensi nez 65535, takze vysledna podminka je - maximum z 65534 a MAXINT

	Konkretni limit se tak bude lisit podle velikosti 'int' na jednotlivych 
plaformach, nicmene, i v nejhorsim pripade by melo byt bezpecne pouzivat 
hodnoty az nekam k 32767.


					Dan


P.S. Pokud ma nekdo dojem, ze program, ktery pro tutez vec pouziva tri 
ruzne typy promennych neni napsany prilis peclive (a ze kod, ktery ma 
zajistovat bezpecnost by peclive napsany byt mel), tak ma tentyz dojem 
co ja.

-- 
Dan Lukes                                   SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz



More information about the Users-l mailing list