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í
×
    včera 20:22 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.101 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.101 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 10:00 | Komunita

    V Brně na FIT VUT probíhá třídenní open source komunitní konference DevConf.CZ 2025. Vstup je zdarma, nutná je ale registrace. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.

    Ladislav Hagara | Komentářů: 0
    včera 09:44 | IT novinky

    Vyloučení technologií, které by mohly představovat bezpečnostní riziko pro stát, má umožnit zákon o kybernetické bezpečnosti, který včera Senát schválil spolu s novelami navazujících právních předpisů. Norma, kterou nyní dostane k podpisu prezident, počítá rovněž s prověřováním dodavatelů technologií pro stát. Normy mají nabýt účinnosti od třetího měsíce po jejich vyhlášení ve Sbírce zákonů.

    Ladislav Hagara | Komentářů: 4
    včera 01:11 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.6.

    Ladislav Hagara | Komentářů: 0
    včera 00:55 | Nová verze

    Po Red Hat Enterprise Linuxu a AlmaLinuxu byl v nové stabilní verzi 10.0 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    11.6. 22:55 | Nová verze

    Bylo vydáno Eclipse IDE 2025-06 aneb Eclipse 4.36. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    11.6. 22:33 | IT novinky

    Americká filmová studia Walt Disney a Universal Pictures podala žalobu na provozovatele populárního generátoru obrázků pomocí umělé inteligence (AI) Midjourney. Zdůvodňují to údajným porušováním autorských práv. V žalobě podané u federálního soudu v Los Angeles označují firmu za „bezednou jámu plagiátorství“, neboť podle nich bez povolení bezostyšně kopíruje a šíří postavy z filmů jako Star Wars, Ledové království nebo Já, padouch, aniž by do nich investovala jediný cent.

    Ladislav Hagara | Komentářů: 1
    11.6. 18:33 | IT novinky

    Ultra Ethernet Consortium (UEC), jehož cílem je optimalizace a další vývoj Ethernetu s důrazem na rostoucí síťové požadavky AI a HPC, vydalo specifikaci Ultra Ethernet 1.0 (pdf, YouTube).

    Ladislav Hagara | Komentářů: 0
    11.6. 13:00 | IT novinky

    Francouzský prezident Emmanuel Macron chce zakázat přístup na sociální sítě pro děti do 15 let. Francie podle něj tento krok udělá sama do několika měsíců, i pokud se na něm neshodnou další státy Evropské unie. Reaguje tak na úterní vraždu vychovatelky, kterou ve východofrancouzském městě Nogent pobodal 14letý mladík. Jednotlivé sociální sítě podle něj mají možnost věk ověřit a vymáhat zákaz pomocí systémů na rozpoznávání tváří.

    Ladislav Hagara | Komentářů: 12
    11.6. 05:11 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,742 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 165 místo. Karolina, GPU partition klesla na 195. místo a Karolina, CPU partition na 421. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (55%)
     (31%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 255 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    vlastikroot avatar 15.5.2009 22:22 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: safe funkcie v C
    V ankete mi chybi ze M$ je kupa sracu a meli by jit doprdele :-D
    We will destroys the Christian's legion ... and the cross, will be inverted
    thingie avatar 15.5.2009 22:23 thingie | skóre: 8
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Tak, já bych se nebál prostě a jednoduše každý výskyt třeba strcpy označit za [bezpečnostní] chybu. Ne že by to někdy nemohlo být OK a platné, ale obecně vzato to značí problém. :)
    Růžové lži.
    Luk avatar 15.5.2009 23:41 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Ona to skutečně je bezpečnostní chyba (taktéž třeba to sscanf()). Ale zatímco u gets() se to zdůrazňuje (takže tuto funkci snad už dnes nikdo nepoužívá), celá halda těch zbývajících se vesele používá dál, a to i v tutoriálech pro začátečníky (což je výtečná cesta, jak jejich použití dále upevňovat a prodlužovat, a jak si tedy zadělávat na budoucí záludné problémy v programech).
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    15.5.2009 23:54 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: safe funkcie v C
    a) ak to je bezpečnostná chyba, ako písať multiplatformný kód? Čo použiť na Linux-e?
    b) čo s existujúcim starým kódom, ktorý treba udržiavať?
    c) osobne si nemyslím, že to je chyba(s výnimkou gets()). Len treba vedieť s akými dátami človek pracuje.
    16.5.2009 00:32 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    a) ak to je bezpečnostná chyba, ako písať multiplatformný kód? Čo použiť na Linux-e?

    Pokud nejde psát multiplatformní kód jinak, než přímým použitím standardní C knihovny, tak jsem žil celý život ve lži. :-)

    16.5.2009 00:41 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Coz
    char *strncpy(char *dest, const char *src, size_t n)
    ?
    16.5.2009 00:46 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Znovu se ptám, víte co strncpy dělá? Abyste nebyl překvapen!

    Jedna z nejhorších bezpečnostních chyb, a kupodivu velmi častých, je použití strncpy Céčkaři, kteří netuší, co ta funkce opravdu dělá.

    kozzi avatar 16.5.2009 00:49 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: safe funkcie v C
    No ja bych rekl ze ta funkce opravdu dela to co si mysli. A to ze kopiruje n znaku z jednohe retezce do druheho. Horsi je kdyz clovek nevi jak to dela :-D
    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    16.5.2009 01:06 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    No jo no :-)

    Ona dělá trošku víc, než jenom kopíruje. :-)

    A zase při kopírování občas nezkopíruje to, co si ten člověk nahoře myslí. :-)

    16.5.2009 02:04 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Pokud tim clovekem nahore myslis mne, tak ja jsem se jen cloveka nade mnou zeptal, coz strncpy.. ? Nic vic, nic min. Nevim, proc z toho odvozovat nejake dalsi soudy. :-)
    16.5.2009 02:08 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Vim, co de dala a jak. man strncpy umim napsat :-)
    16.5.2009 09:22 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Coz
    char *strncpy(char *dest, const char *src, size_t n)
    ?

    strncpy_s,
    16.5.2009 00:30 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Ona to skutečně je bezpečnostní chyba

    Jaká je bezpečnostní chyba v tomto kódu?:

    int pokus(const char* src)

    {

      if (src == NULL)

        return ERR_NULL_STRING;

     

      size_t src_size = ::std::strlen(src);

      if (src_size > 10)

        return ERR_TOO_LONG_STRING;

     

      char buff[11];

      ::std::strcpy(buff, src);

      // ... dalsi akce ...

     

      return ERR_OK;

    }

     

    Chci slyšet přesné vysvětlení, jak výše uvedené použití strcpy způsobilo bezpečnostní chybu.

    Luk avatar 16.5.2009 00:56 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: safe funkcie v C
    V tomto konkrétním případě tam chyba není. Chyba nastává v těch případech, kdy autor nemá plnou kontrolu nad velikostí dat, se kterými se pracuje. Problém je, že často je to tak, že i když nejprve tu kontrolu má, později program upraví tak, že ji ztratí - a přitom zapomene místo potenciálně nebezpečné funkce použít jinou.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    16.5.2009 01:05 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Já bych to zobecnil: Každou funkci jde použít chybně, naprosto každou. Takže rizikem je naprosto každá funkce, kterou v programu použijete.

    Ale jsou určitá dogmata, která – bez pochopení podstaty samé – se budou papouškovat dokola.

    Stejně chybně můžete použít třeba strnprintf – jednoduše do ní třeba napíšete, že buffer má velikost 100 bajtů a později program upravíte na buffer o velikosti 20 bajtů. A máte stejnou bezpečnostní chybu.

    Že je to nepravděpodobné? Co tohle:

    wchar_t buff[10];

    wcsnprintf(buff, sizeof(buff), ...);

    A hned máte úplně stejnou bezpečnostní chybu, i se „safe“ funkcí.

    Rád bych, aby se přestalo blekotat o nebezpečnosti některých funkcí. Největší bezpečnostní chyby dělá programátor, který má mylný dojem, že některé funkce jsou „bezpečné“, a je celkem jedno, jaké to jsou.

    16.5.2009 12:08 hanzz | skóre: 19 | blog: hanzz
    Rozbalit Rozbalit vše Re: safe funkcie v C

    od doby co je v hodne distribucich SW prekladan s fortify check to zas takovy bezpecnostni problem neni, coz nemeni nic na tom, ze je to stale chyba... jen nasledky nemusi byt tak dramaticke

    16.5.2009 00:32 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Tak, já bych se nebál prostě a jednoduše každý výskyt třeba strcpy označit za [bezpečnostní] chybu.
    Ona to skutečně je bezpečnostní chyba
    muzete mi dolozit, ze kazdy vyskyt strcpy je bezpecnostni chyba?
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Luk avatar 16.5.2009 01:03 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Každý výskyt ne - viz výše.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    16.5.2009 13:16 Kvakor
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Také považuju názor "každé strcpy() je chyba" za poněkud extrémní - to, že funkce může být nebezpečná, totiž nutně neznameném že opravdu musí být nebezpečná. Já bych to rozdělil na tři úrovně:
    1. Bezpečné ("blbovzdorné")
    2. Podmíněne nebezpečné, ale zabezpečitelné kontrolou vstupů (pokud jsou vstupy v pořádku, funkce je bezpečná)
    3. Nebezpečné - nejdou nijak zabezpečit a neměli by se vůbec používat
    strcpy() patří do druhé skupiny, kdežto klasický připad té třetí je gets(), který nemáme šanci zabezpečit, protože vstup je plně na libovůli uživatele.
    kozzi avatar 16.5.2009 00:37 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: safe funkcie v C
    No kazdopadne nas tyto funkce uci (nuti) pouzivat i na vysoke skole. A to ze jsou nebezpecne slysim prvne. Je nekde dobrej clanek, kterej by mi to objasnil?
    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    16.5.2009 11:23 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: safe funkcie v C
    V čem spočívá bezpečnostní chyba při použití sscanf nebo scanf? Pokud se tím nenačítá celý řetězec neurčité délky (formátem %s), ale číslice, případně znaky, nemělo by se nic stát.
    16.5.2009 20:04 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Ona to skutečně je bezpečnostní chyba (taktéž třeba to sscanf()). Ale zatímco u gets() se to zdůrazňuje (takže tuto funkci snad už dnes nikdo nepoužívá), celá halda těch zbývajících se vesele používá dál

    Mezi těmi dvěma příklady je ale hodně podstatný rozdíl. Zatímco gets() je opravdu nebezpečná vždy, strcpy() je bezpečnostní chyba jen v případě, že neošetřím, jestli mám dost místo pro to, co kopíruji. Takže jde jen o potenciálně rizikovou funkci, na rozdíl od gets().

    15.5.2009 22:58 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS)
    #define _CRT_SECURE_NO_WARNINGS
    #endif // _MSC_VER
    
    15.5.2009 23:07 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Líbí se mi funkce gets_s, o které v tom PDF píšou, že je lepší místo ní použít raději fgets. :-)
    15.5.2009 23:45 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Ja som tie *_s fcie nepochopil, v com su lepsie nez strncpy, snprintf, strncmp a podobne?
    If you hold a Unix shell up to your ear, you can you hear the C.
    16.5.2009 00:37 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Mimochodem, pochopil jste vůbec, co dělá funkce strncpy?

    Věřte mi, že řada Céčkařů žije v bludu, že ví co skutečně tato funkce dělá.

    Víte o tom, že funkce strncpy může zkopírovat string ukončení řetězce koncovou nulou?

    thingie avatar 16.5.2009 01:13 thingie | skóre: 8
    Rozbalit Rozbalit vše Re: safe funkcie v C
    No, kdopak nám tady z relativně triviální věci zase dokáže udělat velkou mystickou aféru…

    Ta třetí věta nedává česky smysl.
    Růžové lži.
    16.5.2009 03:35 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Z naprostého prdu dokázal udělat skandální záležitost především autor článku.

    A já jsem to tady jenom chtěl trochu rozbít, protože je tu úžasné, jak spousta lidí, co se rozhořčují nad MS netuší, která bije.

    Realita je jednoduchá: V jakémkoli low level jazyce můžete nasekat chybu na každém řádku kódu, ať použijete cokoli. Low level jazyk jako je Céčko Vám umožní natlouci si čumák kam se jenom podíváte. Naprosto vše je v něm „potenciálně nebezpečné“, fakticky nulové kontroly, vše musí hlídat programátor a vědět co dělá.

    Chcete používat bezpečné funkce? Jak jednoduché! Nepoužívejte Céčko! Zvolte si high level jazyk, který má kontroly a bezpečnost už v jazyce. Nebo si zvolte Adu. Nebo něco podobného. Ale pamatujte si, před Vaší blbostí (případně nezkušeností) Vás neochrání vůbec, ale naprosto nic. I tam jde udělat chybu v algoritmu, dostat se do nekonečné smyčky a řadu jiných věcí.

    Céčko je systémový jazyk! Tedy pro ty, kdo chtějí programovat operační systém, nebo kdo chtějí programovat věci na nízké úrovni. Takoví lidé potřebují, a to velmi nutně, jazyk, který jim dovolí všechno – včetně zhroucení počítače, včetně chyb jejich vlastní blbosti a další. Ano, Céčko je nebezpečný jazyk – je v něm potenciálně nebezpečná každá funkce, každý řádek.

    A za druhé – všechny safe funkce, co si prosadil Microsoft je schopen běžný programátor naprogramovat za jedno odpoledne. Všechny ty funkce s přídavkem _s v názvu jsou velmi jednoduché k napsání, a dají se nádherně – a multiplatfromně – napsat jako modul nad standardní knihovnou Céčka. Ať už si o MS myslím cokoli, jeho počin není úplně nejhorší, a je za ním dobrá myšlenka.

    Stringové funkce v Céčku je totiž něco příšerného. A nejenom příšerného, ale také pomalého, neefektivního, a navíc chyby přitahujícího. Jakýkoli blbý objekt typu string, který napíšu v C++, nebo strukturu, kterou budu emulovat v C objekty a nad ní vystavím pár funkcí – rychlostně, efektivitou i bezpečností překonají všechny funkce strněco v Céčku. I poměrně špatně napsaná STL třída std::string rychlostně trumfne low level práci v Céčku se strněco funkcemi, na komfort a bezpečnost ani nemluvě.

    Microsoft měl dobrou ideu – postavit nad nedomyšlenou, neúplnou množinou strněco funkcí v Céčku úplnou množinu funkcí, které navíc jsou schopny kontrolovat délky a rozsahy. Tuto množinu nabídl ISO ke standardizaci, ale byl odmítnut. Protože jejich funkce jsou tisíckrát lepší, než to, co je ve standardní knihovně Céčka, zařadil je tedy do svého kompilátoru a sám je používá. Multiplatformovosti to nebrání – a pokud to někdo tvrdí, měl by si uvědomit, že moc toho ještě neumí. Jsou to jednoduché funkce, které nikterak nezávisí na žádné platformě.

     

     

    16.5.2009 09:34 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Z naprostého prdu dokázal udělat skandální záležitost především autor článku.
    Uh. To bolo na mňa?
    A za druhé – všechny safe funkce, co si prosadil Microsoft je schopen běžný programátor naprogramovat za jedno odpoledne.
    To možno. Ale nie som si istý, či si pochopil môj problém:
    1. Mám existujúci kód používajúci staré funkcie bez kontrol hraníc. Ak ten kód chcem kompilovať súčasným kompilátorom a knižnicami od MS tak ho musím prekopať a na každé miesto, kde sa robí so stringami dotiahnuť údaj o veľkosti. Viem, že je to netriviálna úloha, pretože som niečo podobné už absolvoval a nebola to sranda.
    2. Ak píšem nový kód a chcem, aby bol kompilovateľný aj gcc/glibc aj s MSVC, tak ho musím písať tak ako ho chce MS a na gcc/glibc musím buď linkovať knižnicu, ktorá nie je v distre alebo si napísať makrá, ktoré tie extra argumenty zahodia. Ani jedno sa mi nepáči.
    (MS) Tuto množinu nabídl ISO ke standardizaci, ale byl odmítnut.
    To máš odkiaľ? Pretože ja hore linkujem dokument od open-std.org, kde sa tie funkcie pridávajú do C99.
    17.5.2009 08:34 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Tak pod to bych se s radostí podepsal.
    In Ada the typical infinite loop would normally be terminated by detonation.
    16.5.2009 03:48 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Mimochodem, teď jsem si vylistoval zdrojové kódy všech safe funkcí v C kompilátoru (MS automaticky dává ke kompilátoru zdrojové kódy celé runtime knihovny). Celá sada funkcí, včetně zdrojového kódu pro obě varianty, tedy jak pro 8-bitové znaky, tak pro unicode – je psána multiplatformě i Microsoftem, a celé to má dohromady 64 KB zbytečně roztahaných zdrojových kódů.

    16.5.2009 09:44 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Celá sada funkcí, včetně zdrojového kódu pro obě varianty, tedy jak pro 8-bitové znaky, tak pro unicode – je psána multiplatformě i Microsoftem
    Nemal som na mysli multiplatformovosť čo do 8-bit vs. WCHAR, ale použitie na OS, ktorý nie je od MS, alebo kompilátorom, ktorý nie je od MS. Čo sa stane s existujúcim kódom, keď _CRT_SECURE_NO_WARNINGS jedného dňa zanikne?
    16.5.2009 15:02 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Nemal som na mysli multiplatformovosť čo do 8-bit vs. WCHAR, ale použitie na OS, ktorý nie je od MS, alebo kompilátorom, ktorý nie je od MS.
    Imho aj ten príspevok nad tebou
    Čo sa stane s existujúcim kódom, keď _CRT_SECURE_NO_WARNINGS jedného dňa zanikne?
    Čo by sa akože malo stať?
    16.5.2009 02:13 salam
    Rozbalit Rozbalit vše Re: safe funkcie v C
    co to?
    16.5.2009 03:34 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Je tu diskuze na téma strncpy a místo vysvětlení možného problému této funkce laikům se tu někteří vytahují otázkama, jestli ten druhý ví, co ta funkce dělá. Takže k věci:

    V manuálových stránkách najdete toto:
    char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
    
    The strncpy() function copies at most n characters from s2 into s1. If s2 is less than n characters long, the remainder of s1 is filled with `\0' characters. Otherwise, s1 is not terminated.
    Zvírazněná pasáž je velice důležitá, protože říká, že pokud bude zdrojový řetězec větší než cílový, zkopíruje se 'n' znaků do cílového bufferu a ten nebude ukončený nulou. V praxi to znamená, že zavoláním funkce strlen() nebo jakékoliv neuvážené použití takového bufferu povede s největším štěstím k pádu (mluvím o štěstí, protože ladit tyto chyby může někoho pěkně vytočit;-) ).
    16.5.2009 03:50 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: safe funkcie v C

    Jenom poznámku – to není vytahování se na laiky. To je jen upozornění, že když někdo machruje v této diskusi, měl by na to mít.

    Ale je fajn, že tu mnozí konečně objeví, co skutečně dělá strncpy. Sám jsem se divil, kolik lidí to neví.

    16.5.2009 07:42 M. Lox | skóre: 12
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Kolik lidí to neví? Já v C téměř neprogramuji a ani ho moc neumím (mám ale, pravda, zkušenost v LISPu, takže mi seznamy problém nedělají :-) ), ale je mi naprosto jasné, že když zkopírujete první tři položky ze seznamu [A B C D E F \0], tak vám vznikne [A B C].
    make menuconfig, not war!
    16.5.2009 07:43 M. Lox | skóre: 12
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Jinými slovy: „A to je všechno, ta úžasná bezpečnostní chyba je taková hovadina?“
    make menuconfig, not war!
    stativ avatar 16.5.2009 10:01 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Já si nemůžu pomoct, ale tady v diskusi nikdo neříkal, že tohle neví. Spíš mi přijde, že bezdůvodně předpokládáte, že dotyčný to vůbec neví.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    thingie avatar 16.5.2009 10:11 thingie | skóre: 8
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Kdyby to nevěděl, tak by asi ani nevěděl, že to neví, a nemohl se tedy hlásit k tomu, že to neví. Náš veliký mystik nám tu jenom chce ukázat, že ani strncpy není nutně zcela bezpečná funkce, což má a nemá pravdu, ve smyslu debaty ovšem spíš nemá.
    Růžové lži.
    16.5.2009 10:02 qiRzT | skóre: 14 | blog: U_Marvina
    Rozbalit Rozbalit vše Re: safe funkcie v C
    To mě taky taky překvapuje. Asi jsem měl nadprůměrně schopnou chvilku, ale jedna z prvních věcí, co mě napadla, když jsem se o té funkci dozvěděl, bylo, co se asi stane, když ten vstup bude delší než n. A jak jsem čet tuhle diskusi, tak si celou dobu lámu hlavu, kam směřují ty tajuplné narážky o nebezpečnosti téhle funkce.
    Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
    16.5.2009 11:31 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Dakujem za vysvetlenie, ale som sklamany. Cakal som bombasticku dieru (po ponkracovych niekolkoobrazovkovych napinakoch) a ono iba nieco, o com uz roky viem a da sa liecit prikazom s1[n-1]='\0'. Na pocet znakov sa to podoba M$ fciam, na pocet podtrzitok to dokonca vedie.
    If you hold a Unix shell up to your ear, you can you hear the C.
    17.5.2009 08:39 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: safe funkcie v C
    No, a to se vždycky řešilo tím, že se na konec bufferu nacpala natvrdo \0, ať už ji tam strncpy dal nebo ne. Nebo se použije snprintf. Spíš je důležité si odnést ponaučení: když jakkoli manipuluju s nulou ukončeným char*, musím se přesvědčit o tom, že tam někde ta ukončující nula je, nejlépe tam, kde má být.
    In Ada the typical infinite loop would normally be terminated by detonation.
    17.5.2009 09:47 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    No v tomto případě je to asi nejlepší řešení. Ale já osobně tyto funkce vůbec nepoužívám, přijde mi to z hlediska koncepce nevýkonné a navíc i nebezpečné :)
    17.5.2009 09:46 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    OMG, já asi neumím česky...:)
    17.5.2009 21:34 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Zajímavější problém je kopírování bufferů, které se překrývají. Nicméně i to se průměrný čtenář manuálů dozví. (Chválím správce manuálových stránek, že zařadili *p kapitoly.)
    17.5.2009 21:53 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: safe funkcie v C
    To jo, to mě nenapadlo. Podle mě je stejně nejlepší používat nějakou třídu v C++, popřípadě si udělat alespoň strukturu v C a napsat si nějaké funkce nadtím. Ale to už je detail;)
    16.5.2009 09:36 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: safe funkcie v C
    Idea za těmi funkcemi je v zásadě správná, ale nemohu si pomoci že v C podle Microsoftu je více podtržítek než v LISPu závorek.
    16.5.2009 11:26 honza
    Rozbalit Rozbalit vše Re: safe funkcie v C

    my to u nas ve firme obchazime makrama. A to jiz leta, uz i napr u systemovych funkci (stat,open.write,read ...) mel M$ ty kompatibilni jinak pojmenovany.

    Jinak, jiz po tisici, C neni urcena k tomu, aby se v tom psaly programy, C se pouziva k psani generatoru programu. A v takove konstelaci neni strcpy zadny problem, protoze o to, aby ty delky stringu byly konformni se stara nekdo jiny.

    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.