Byl vydán Debian 13.5, tj. pátá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.14, tj. čtrnáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.
Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.
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).
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. 
char *strncpy(char *dest, const char *src, size_t n)?
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á.
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í. 
Cozstrncpy_s,char *strncpy(char *dest, const char *src, size_t n)?
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.
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.
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
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í chybamuzete mi dolozit, ze kazdy vyskyt strcpy je bezpecnostni chyba?
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.
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.
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().
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) #define _CRT_SECURE_NO_WARNINGS #endif // _MSC_VER
gets_s, o které v tom PDF píšou, že je lepší místo ní použít raději fgets.
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?
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ě.
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:
(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.
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ů.
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 MicrosoftemNemal 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?
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ť?
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
).
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í.
), 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].
s1[n-1]='\0'. Na pocet znakov sa to podoba M$ fciam, na pocet podtrzitok to dokonca vedie.
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.
Tiskni
Sdílej: