abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 17:11 | Komunita

Byl proveden bezpečnostní audit svobodného IMAP a POP3 serveru Dovecot (Wikipedie). Audit byl zaplacen z programu Mozilla Secure Open Source a provedla jej společnost Cure53. Společnost Cure53 byla velice spokojena s kvalitou zdrojových kódu. V závěrečné zprávě (pdf) jsou zmíněny pouze 3 drobné a v upstreamu již opravené bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
dnes 15:30 | IT novinky

Nadace Raspberry Pi představila na svém blogu Raspberry Pi Compute Module 3 (CM3 a CM3L), tj. zmenšené Raspberry Pi vhodné nejenom pro průmyslové využití. Jedná se o nástupce Raspberry Pi Compute Module (CM1) představeného v dubnu 2014. Nový CM3 vychází z Raspberry Pi 3 a má tedy dvakrát více paměti a desetkrát větší výkon než CM1. Verze CM3L (Lite) je dodávána bez 4 GB eMMC flash paměti. Uživatel si může připojit svou vlastní. Představena byla

… více »
Ladislav Hagara | Komentářů: 0
dnes 01:23 | Nová verze

Oficiálně bylo oznámeno vydání verze 3.0 multiplatformního balíku svobodných kancelářských a grafických aplikací Calligra (Wikipedie). Větev 3 je postavena na KDE Frameworks 5 a Qt 5. Krita se osamostatnila. Z balíku byly dále odstraněny aplikace Author, Brainstorm, Flow a Stage. U Flow a Stage se předpokládá jejich návrat v některé z budoucích verzí Calligry.

Ladislav Hagara | Komentářů: 3
včera 15:25 | Nová verze

Bylo oznámeno vydání první RC (release candidate) verze instalátoru pro Debian 9 s kódovým názvem Stretch. Odloženo bylo sloučení /usr jako výchozí nastavení v debootstrap. Vydán byl také Debian 8.7, tj. sedmá opravná verze Debianu 8 s kódovým názvem Jessie.

Ladislav Hagara | Komentářů: 6
včera 13:37 | Zajímavý projekt

1. ledna byl představen projekt Liri (GitHub). Jedná se o spojení projektů Hawaii, Papyros a původního projektu Liri s cílem vyvíjet operační systém (linuxovou distribuci) a aplikace s moderním designem a funkcemi. Včera byl představen Fluid 0.9.0 a také Vibe 0.9.0. Jedná se o toolkit a knihovnu pro vývoj multiplatformních a responzivních aplikací podporující Material Design (Wikipedie) a volitelně také Microsoft Design Language (designový jazyk Microsoft) [reddit].

Ladislav Hagara | Komentářů: 5
14.1. 00:33 | Zajímavý software

Google na svém blogu věnovaném open source představil knihovnu pro komprimaci a dekomprimaci 3D grafiky s názvem Draco. Knihovna bude využívána například v aplikacích pro virtuální a rozšířenou realitu. Porovnání Draco s gzip na YouTube. Zdrojové kódy Draco jsou k dispozici na GitHubu pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 5
13.1. 17:27 | IT novinky

V loňském roce proběhla úspěšná kampaň na Indiegogo na podporu GPD Win. Jedná se o malý 5,5 palcový notebook a přenosnou herní konzoli v jednom. Předinstalované Windows 10 lze nahradit Linuxem. V únoru by se na Indiegogo měla objevit kampaň na podporu 7 palcového notebooku GPD Pocket.

Ladislav Hagara | Komentářů: 28
13.1. 02:00 | Nová verze

Po pěti měsících od vydání verze 1.0.0 (zprávička) byla vydána verze 2.0.0 frameworku Kirigami (HIG) pro vytváření uživatelských rozhraní mobilních a konvergentních aplikací nad toolkitem Qt. Pro vyzkoušení je určena aplikace pro Android Kirigami gallery.

Ladislav Hagara | Komentářů: 0
12.1. 23:28 | Zajímavý software

Akční hra Lugaru HD od Wolfire Games (recenze) byla uvolněna jako svobodný software, a to včetně dat (pod licencí Creative Commons Attribution – Share Alike). Linuxový port byl v roce 2010 součástí první akce Humble Indie Bundle a engine byl krátce poté uvolněn pod licencí GNU GPL, což vedlo mj. k portu na AmigaOS. Autor mezitím pracuje na pokračování nazvaném Overgrowth.

Fluttershy, yay! | Komentářů: 0
12.1. 14:49 | Bezpečnostní upozornění

Na serveru Jabb.im bylo zveřejněno vyjádření k úniku dat z Jabbim Archive (pastebin). Dump databáze obsahuje komunikaci uživatelů, jejich IP adresy a logy aplikace od října 2015 do března 2016. Celkově se jedná o 8 GB dat, převažujícím jazykem zpráv je čeština a slovenština. O úniku informoval jako první server Motherboard. Jabbim Archive byla službou volitelnou, dostupnou pouze pro VIP uživatele. Podle provozovatele serveru Jabb.im k

… více »
Michal Makovec | Komentářů: 68
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (10%)
 (2%)
 (75%)
 (3%)
 (10%)
Celkem 293 hlasů
 Komentářů: 19, poslední 13.1. 22:02
    Rozcestník
    Reklama

    Dotaz: C - jak hlídat přístup mimo pole na stacku?

    9.6.2004 17:03 David Martinek | skóre: 10
    C - jak hlídat přístup mimo pole na stacku?
    Přečteno: 157×
    Mám dotaz pro programátory v céčku: Existuje nějaký nástroj pro hlídání neoprávněného přístupu k paměti na zásobníku? Jde mi o detekování tohoto typu chyb:

    void func(void)
    {
      int pole[3] = {0};

      pole[3] = 123; // zápis do nepřidělené paměti

      printf("%d", pole[3]); //čtení z paměti, která mi nepatří
    }

    Zkoušel jsem valgrind, ale ten tyto problémy hlídá pouze u dynamicky alokovaných polí - tedy na heapu. Pokud je pole lokální - na zásobníku, neodhalí to.

    Odpovědi

    CIJOML avatar 9.6.2004 17:17 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    1) porid si CPU s nx bitem a prislusny patch do jadra
    2) programuj jinak nez jako prase
    3) zaregistruj se do bugtraq a upgraduj
    4) V jadru existuje volba
    Check for stack overflows
    Ale jak to maka nevim

    A to je asi tak vse, pratele :)

    9.6.2004 17:35 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Ad 1. NX řeší spouštění kódu ze zásobníku, ne obyčejné přetečení.

    Ad 2. Souhlas ... i když i mistr tesař se někdy utne ;)

    Ad 3. WTF?

    Problém se zásobníkem je, že je (a) malý, takže moc nelze použít metody typu ElectricFence (b) celý tvůj a v podstatě kamkoli do něj je v některých situacích v pořádku psát, takže lze stěží definovat oblasti, kam se psát nesmí.

    FM najde tohle: http://www.xmailserver.org/gmm.html, ale na tvoje příklady to stejně nepomůže, tam jedině nepsat jako prase...
    9.6.2004 18:27 David Martinek | skóre: 10
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Díky za odpověď. Tajně jsem doufal, že někdo bude znát nějaký superchytrý nástroj, který by to zvládnul detekovat, i když jsem sám nic takového nenašel.

    Osobně by se mi to docela hodilo jako pomůcka pro opravování školních projektů a studentům jako pomůcka pro jejich vytváření.

    ----

    WTF == World Takewondo Federation?
    9.6.2004 18:40 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    ;-) WTF = What The F*** (je to v Google hned za World Takewondo Federation)

    Ladění přepsání zásobníku je opravdu celkem pruda, hlavně proto, že když to konečně segfaultne, už se často ani nedozvíš, v jaké funkci, protože je přepsaný zásobník...

    Obecná kontrola přepsání polí na zásobníku by vyžadovala spolupráci kompilátoru, který by (a) přidal do kódu kontroly mezí pro každý přístup (to gcc dokonce umí, ale jen pro Fortran a Javu) (b) zařídil, aby se kolem polí na zásobníku nechala nějaká neinicializovaná mezera, takže by pak valgrind mohl být byl k něčemu...
    9.6.2004 22:14 David Martinek | skóre: 10
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Tak jsem nad tím přemýšlel a nabyl jsem přesvědčení, že kompilátor céčka z principu nemůže do kódu přidávat kontrolu mezí. Je to daň za adresovou aritmetiku a slabý typový systém. V Céčku totiž není principiální rozdíl mezi typem pole a typem ukazatel. Překladač si nemůže být jistý, jestli parametr funkce int * je ukazatel nebo pole. V Pascalu je údaj o délce pole součástí definice datového typu. V céčku to tak není.

    Napadlo mě, že by překladač C mohl pro kontrolu mezí před každé pole zapisovat údaj o skutečné velikosti, ale právě kvůli adresové aritmetice by to nebylo k ničemu. Když mám funkci

    void func(char *pole)
    {
      printf("%s", pole);
    }

    tak jí můžu předat jakoukoli adresu - třeba i ukazatel doprostřed pole - u operací se stringy se to tak běžně dělá. Můžu to potom volat třeba takto:

    char *str = "Te pero sombrero!";
    func(str+8);

    Překladač by potom uprostřed této funkce nebyl schopen najít skutečný začátek toho pole. Kus před tímto ukazatelem by hledal údaj o rozměrech, ale bylo by tam něco úplně jiného.

    Tak si začínám myslet, že žádný nástroj, který bych potřeboval neexistuje a asi ani existovat nebude.
    9.6.2004 22:31 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Jo, pokud předáváš pointery doprostřed polí alokovaných na zásobníku kamsi, tak to nefunguje. Nicméně protože pole alokovaná na zásobníku mají jasnou velikost, tak operace uvnitř funkce samotné (tj. tvé příklady) by to hlídat mohlo.

    Jinak samozřejmě můžeš (studenti mohou) používat lepší funkce pro práci s řetězci z nějaké knihovy, např. z GLib (-> GString), které si pamatují alokovanou délku ... a také je ale typicky nealokuješ na zásobníku, takže lze použít ledasjaké debugovací metody. Zrovna řetěce bych tak jako tak na zásobníku moc nealokoval, to přetečení vyloženě přivolává ;)

    OTOH pokud se mají naučit, jak věci dělat elementárně a ručně, tak jen ať debuggují, ono jim to neuškodi...
    CIJOML avatar 9.6.2004 20:01 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    A co kdyz jste na vejsce to vypsat jako diplomovou praci? Treba z toho neco vypadne :)
    CIJOML avatar 9.6.2004 20:02 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    jasne, ale co te hlavne zajima je prave to spusteni kodu na zasobniku :) zbytek je z pohledu programovani nevyznamna chyba v kodu co zpusobi pouze pad aplikace :)
    9.6.2004 20:48 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Řekl bych, že ty studenty zajímá nástroj, který jim pomůže chybu najít. Věc, která zabrání zneužití přetečení zásobníku, když už se vyskytne ve finální verzi, je užitečná pro ostré nasazení, nikoli pro vývoj, kde chceš předně tu chybu odstranit (nehledě na to, že ve školních projektících asi těch chyb bude hafo...).
    9.6.2004 21:05 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    A nedá mi ještě nedodat:
    “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” – Brian W. Kernighan
    Což je taková základní poučka, pokud člověk chce někdy ty chyby ve svém kódu najít...
    9.6.2004 17:33 Petr
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Neber to zle, ale jestli neuhlidas ani staticke pole, tak si vem radeji pastelky.
    9.6.2004 18:15 David Martinek | skóre: 10
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    No nejde o mně. Já si pole ohlídat umím (a pastelky bych do mých rukou raději nesvěřoval ;-)). Hledám nástroje, které bych mohl doporučit studentům - začátečníkům (1. semestr na VŠ, Základy programování) pro kontrolu školních projektů.

    Radami typu "nepsat jako prase" jsem kdysi studenty taky zásoboval, ale vždy se to míjelo účinkem...
    9.6.2004 18:23 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    A co je učit raději programovat v Pythonu? (příp. s/Python/jiný_oblíbený_jazyk_vyšší_úrovně_akorát_ne_Perl_nebo_PHP/). Tedy v něčem, co nesegfaultuje při chybě, kde administrativa netvoří 50% kódu, a co má navíc interaktivní interpretr s helpem a doplňováním na Tab...
    9.6.2004 18:38 David Martinek | skóre: 10
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Rozhodnutí o tom, v jakém jazyce se učí Základy programování, neleží na mně. Jde o rozhodnutí vyššího vedení školy a dospívalo se k němu docela dlouho.

    -----------------

    Dlouho jsme základy učili v Pascalu, ale na nátlak studentů (a vedení) se zvolilo Céčko, protože většina ostatních projektů ve vyšších semestrech se dělá v Céčku (nebo jazycích z něj vycházejících) a Pascal byl pro studenty "ztracený rok" - alespoň oni měli ten pocit.

    Nějakou dobu byla ve hře i Java, ale ta je zase pro výuku základů příliš vysokoúrovňová. Špatně se na ní učí problematika ukazatelů/alokace/dealokace paměti, atd. Python jsme vyloučili ze stejných důvodů jako Javu.
    10.6.2004 08:14 rastos | skóre: 60 | blog: rastos
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    ...java...Špatně se na ní učí problematika ukazatelů/alokace/dealokace paměti, atd.

    No a vvvo tom to je!

    Keby sa ucili javu, tak sa sice nenaucia problematiku ukazovatelov/alokacie/dealokacie, ale ani nenarazia na problemy s tym spojene. (Otazne moze byt, ci je dobre nevediet o problemoch, s ktorymi sa nestretnu ak zostanu robit v jave(/python/perl/...))

    10.6.2004 08:42 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    IMHO není v základech programování od věci se to naučit ... stejně jako není od věci vědět jak fungují hash tabulky nebo quicksort nebo balancované stromy nebo cojávím, navzdory tomu, že už to v Javě/Pythonu/Perlu/C/čemkoli někdo napsal přede mnou. Neznalost elementárních algoritmů ještě nikomu nepomohla...
    10.6.2004 09:53 David Martinek | skóre: 10
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Přesně tak. Učit základy v Javě je jako učit prvňáčky ve škole počítat tak, že jim rozdám kalkulačky.

    Mám z praxe potvrzenou zkušenost, že programátoři, co se od začátku učí programovat jenom v Javě, potom hůře chápou problematiku memory leaků, nebo jsou schopni kvůli zjištění rozměru databázové tabulky nasypat celou DB tabulku do vektoru (po jednotlivých řádcích) a následně jej zahodit. Vždyť garbage collector se o všecko postará...

    Java je skvělý nástroj v rukou profesionálů, ale jako první programovací jazyk se podle mého mínění nehodí.
    10.6.2004 19:14 zeby?
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    to je ... ruby ? :-)
    CIJOML avatar 9.6.2004 20:03 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Ono je to nepsat jako prase urcite nauci samo v praxi :D
    9.6.2004 20:51 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    Praxe je spíš naučí používat cut'n'paste než psát bezpečně...
    CIJOML avatar 9.6.2004 22:04 CIJOML | skóre: 58 | Praha
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    pockej to te nauci hlavne psani semestralek, kdyz se na to jako obvykle vy****sh a potom musis udelat 6 semestralek za 5 dnu :) mno a potom je dalsi vychytavka to predvest cvicicimu tak, aby nenasel ty chyby o kterych vis a pokud mozno ani ty, o kterych nevis :D
    9.6.2004 17:43 Maude Lebowski
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    radu veci odhali -Wall option u C, ale vyboceni z rozsahu za behu samo ne.

    Existuje electricfence (elektriky ohradnik:) ktery by mel podobne chyby odhalit za behu...
    9.6.2004 17:49 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: C - jak hlídat přístup mimo pole na stacku?
    ElectricFence nehlídá stack overflows, ani nemůže, protože alokace na zásobníku je jen nastavení jeho vrcholu.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.