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