Në skedarët e konfigurimit të curl, papritmas është realizuar tërësia sipas Turingut

ËshtĂ« identifikuar mundĂ«sia e krijimit tĂ« funksioneve tĂ« llogaritura pĂ«rmes strukturave nĂ« skedarĂ«t e konfigurimit tĂ« utilitarit Curl. Ky veçori shfaqet vetĂ«m nĂ« versionet e Curl nga 8.12-8.16 dhe shkaktohet nga implementimi i paqĂ«llimshĂ«m i plotĂ«sisĂ« sĂ« Turing-it, qĂ« lejon krijimin e makinave Turing, duke pĂ«rdorur mundĂ«sinĂ« pĂ«r tĂ« nxjerrĂ« intervale bajtesh nga vlerat e variablave dhe thellĂ«si tĂ« pakufizuar tĂ« nguljes gjatĂ« lidhjes me skedarĂ«t e jashtĂ«m tĂ« konfigurimit.

Si një shembull, përmes Curl është organizuar një simulim i punës së makinerisë regjistruese me dy regjistra (makina e Minskut) për mbledhjen e numrave dhe realizimin e programit "99 shishe birrë", i përdorur gjatë mësimit të punës me ciklet. Për të nisur programin, i programuar përmes skedarëve të konfigurimit curl, mjafton të nxjerrësh arkivën dhe të ekzekutosh komandën "curl -q -s -K 99_bottles/main.conf".

Makina regjistruese simulohet pĂ«rmes paraqitjes sĂ« vlerĂ«s sĂ« regjistrit si njĂ« varg i ‘n’ simboleve ‘x’. Operacionet e inkrementimit dhe dekremtimit realizohen pĂ«rmes konkatenimit dhe shkurtimeve tĂ« vargjeve (sintaksi "[0-0]" pĂ«r tĂ« lĂ«nĂ« bajtin e parĂ« dhe "[1-]" pĂ«r tĂ« lĂ«nĂ« tĂ« gjithĂ« pĂ«rmbajtjen pĂ«rveç bajtĂ«ve tĂ« parĂ«), ndĂ«rsa kalimet midis gjendjeve kontrollohen nga direktiva "expand-config", e cila ngarkon dinamik skedarin e ardhshĂ«m tĂ« konfigurimit, duke pĂ«rdorur emrin e tij si etiketĂ« kalimi. Operacioni INC(R) nĂ« makinĂ«n regjistruese realizohet si ‘expand-variable = "r={{r}}x"‘ nĂ« skedarin e konfigurimit Curl, DEC(R) si ‘expand-variable = "r[1-]={{r}}"‘, dhe JMP(S) si ‘expand-config = "S.conf"‘. PĂ«r shembull, kodi pĂ«r llogaritjen e 2 + 3:

Në praktikë, mundësitë e llogaritjes të realizuara përmes skedarëve të konfigurimit janë të kufizuara nga madhësia e stack-ut, pasi çdo hap i ekzekutimit të programit kërkon ngarkimin e një skedari të ri të ngulitur të konfigurimit. Me një stack prej 8 MB, mbingarkesa ndodh rreth pas 922 hapash. Mundësitë ndikohen gjithashtu nga kufizimi në madhësinë e variablave të zgjeruar (parametri MAX_EXPAND_CONTENT është vendosur në 10 MB) dhe konsum i madh memorje për shkak të ruajtjes së të gjitha versioneve të vjetra të variablave.

Megjithëse mundësia e identifikuar nuk është një dobësi në versionet duke filluar nga curl 8.17, truku i shqyrtuar tashmë nuk do të funksionojë për shkak të kufizimit në thellësinë e nguljes së skedarëve të konfigurimit në 5 nivele për të mbrojtur nga rekursioni i pafund.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster