Vládní CERT upozorňuje (𝕏) na kritické zranitelnosti v produktech VMware: CVE-2026-59309, CVE-2026-59310 a CVE-2026-47876. Zranitelnosti v VMware vCenter umožňují vzdálenému útočníkovi se síťovým přístupem obejít autentizaci a získat neoprávněný přístup k vCenter, případně zneužít directory traversal ke spuštění libovolného kódu na vCenter.
Společnost Coinkite upozorňuje na bezpečnostní chybu svých hardwarových kryptopeněženek Coldcard. Jedná se o kritickou chybu v generování náhodných čísel (RNG). Místo hardwarového generátoru náhodných čísel (TRNG) byl omylem používán softwarový fallback (PRNG).
Představena byla nová linuxová distribuce Shadowfetch Linux. Na rozdíl od mnoha nováčků, které nabízejí převážně jiné téma a výběr softwaru, tato distribuce založená na Debianu Testing s desktopovým prostředím KDE Plasma 6.6, klade lokálně běžící umělou inteligenci do centra svého desktopového zážitku.
Max Leiter v roce 2019 zkusil zprovoznit X server na iPadu (iOS). Nyní se k tématu vrátil a s pomocí LLM a balíčkovacích nástrojů Procursus rozběhl desktop s X11 i Waylandem. Jeho balíčky jsou dostupné v repozitáři xiOS.
Společnost Google Cloud dnes oznámila, že její infrastruktura a služby byly oficiálně zařazeny do Katalogu cloud computingu vedeného Digitální a informační agenturou (DIA). Tato certifikace potvrzuje, že infrastruktura a služby Google Cloud splňují přísné bezpečnostní a regulační požadavky České republiky pro provoz cloudových služeb ve veřejném sektoru.
Vůbec poprvé v historii se stát při testování digitálních služeb obrací na širokou veřejnost. Digitální a informační agentura (DIA) a Ministerstvo vnitra zvou občany k zapojení do zátěžového testu eDokladů, které od loňského podzimu prošly optimalizací aplikace a posílením infrastruktury. Test proběhne 13. srpna ve 13:00 a pro jeho úspěch bude potřeba zapojení několika desítek tisíc občanů. Zapojení do testu je zcela dobrovolné a úkol
… více »FireDragon je webový prohlížeč, doposud založený na Floorpu, jednom z forků Firefoxu s větším důrazem na ochranu soukromí a přizpůsobení uživatelského rozhraní. Spravuje ho člen komunity distribuce Garuda Linux. Nové vydání verze 13 opouští Floorp a přechází přímo na Firefox s patchi z LibreWolfu a vlastními úpravami. Dostupný je také na Flathubu.
picogame (GitHub) je malý 2D herní engine pro mikrokontroléry jako RP2040, čip uvnitř kapesní konzole Picopad. Hru napíšeš v Pythonu a vyzkoušíš ji v prohlížeči nebo desktopovém simulátoru. Až bude hotová, zkopíruješ ji na podporovanou desku. Na začátku nepotřebuješ C, sestavení firmwaru ani hardware.
Multiplatformní prohlížeč elektronických knih KOReader byl vydán ve verzi 2026.07 "Sailing Walrus". U PDF souborů s SMask lze vyčistit pozadí. Přibyla podpora Kobo v5 nebo základní podpora OPDS 2.0.
Společnost Valve sponzoruje a společnost Collabora portuje RADV (open source Vulkan ovladač pro AMD GPU z projektu Mesa) na Windows.
Zdravim, mam problem s jednim kodem. Po urcite dobe behu mi padne na hubu.Nevim uz jak tuto chybu osetrit. Nejsem uplne C guru... Prikladam zdrojak fce ve ktere to asi pada:
float DejTeplotu(char* OW)
{
unsigned err;
char * buf;
size_t s ;
char* cesta;
char* prac;
if (OW == NULL) {cout << "Nulovy OW!!!"; return 0; }
else
{
//if (OW == NULL) {cout << "Nulovy OW!!!"; return 0; break; }
//cout << "Delka:" << strlen(OW);
cesta = (char *) malloc(strlen("//10.99A689020800/temperaturenase"));
prac = (char *) malloc(strlen(OW));
if ((cesta != NULL) && (prac !=NULL))
{
cesta[0] = 0;
prac = strcpy(prac,OW);
cesta = strcpy(cesta,"/");
// cout << cesta;
unsigned i;
for (i = 0; i < strlen(prac); i++)
{
// cout << prac[i] << endl;
cesta[i+1] = prac[i];
}
cesta[i+1] = 0;
strcat(cesta,"/temperature");
// cout << endl << "Vysledek:" << cesta << endl;
err = OW_init("/dev/i2c-1");
if (err >= 0)
{
OW_set_error_print("2");
OW_set_error_level("6");
OW_get(cesta,&buf,&s) ;
// OW_get("/10.99A689020800/temperature",&buf,&s) ;
return stof(buf);
free(buf);
free(prac);
free(cesta);
OW_finish() ;
}
else
{
cout << "Vyskytla se chyba v inicializaci-asi malo pameti" << endl;
return 0;
}
}
else
{
free(cesta);
free(prac);
cout << "Vyskytla se chyba v inicializaci" << endl;
return 0;
}
}
}
A jeste vypis z gdb:
Program received signal SIGSEGV, Segmentation fault. 0xb6a7e834 in strlen () from /lib/arm-linux-gnueabihf/libc.so.6 (gdb) bt #0 0xb6a7e834 in strlen () from /lib/arm-linux-gnueabihf/libc.so.6 #1 0xb6c77934 in std::basic_string:char, std::char_traits"char", std::allocator"char" >::basic_string(char const*, std::allocator"char" const&) () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 #2 0x00009550 in DejTeplotu (OW=0x32419 "1099A68902080000") at ./main.cpp:75 #3 0x00009fd0 in main () at ./main.cpp:298 (gdb)
Jsem v koncich...Kdyby nekdo mohl probehnout tento kod a nakopl mne... Dekuji
Řešení dotazu:
gdb toho moc nevidím. Že by chybějící volba -g při kompilaci?
Na první pohled mi přijde, že počítáš s tím, že strlen() vrací velikost řetězce v paměti. Ve skutečnosti ale vrací délku řetězce. V paměti céčkovský řetězec ještě přidává znak 0x00, potřebuje tedy jeden bajt navíc.
Navíc je to taková sprasená ukázka kódu, že nevím, co si jen zkoušíš a co má nějaký reálný význam. Občas je dobré pro účely porady minimalizovat zdroják na co nejmenší kus, kde se problém ještě projevuje.
cpp a jsou použity stream-y, tak není důvod proč nepoužít std::string a je (s tímto) pokoj.
Řádek 75 je
return stof(buf);
přičemž stof() na argument volá konstruktor std::stringstream, který nejdřív implicitně zavolá konstruktor std::string. Můj tip je, že OW_get() vrátila NULL nebo nějaký nesmyslný pointer. Protože nevím, co ta funkce dělá, nemůžu si být jistý, jestli smí vrátit NULL a jestli jste to měl ošetřit (spíš ano).
// tady bys mel mit
prac = (char *) malloc(strlen(OW) + 1);
// misto
prac = (char *) malloc(strlen(OW));
if ((cesta != NULL) && (prac !=NULL))
{
cesta[0] = 0;
// jinak je tohle blbost, jak pise kolega vyse v poznamce!!!
// protoze neni kam ulozit ukoncovaci 0x0
prac = strcpy(prac,OW);
return okamžitě vyskočí z prováděné funkce, takže příkazy za returnem se již neprovedou. Tvůj způsob použití return dává tušit, že máš úplně jinou představu o jeho fungování. Funkce malloc vrátí NULL, pokud nemůže tvůj požadavek na alokaci paměti uspokojit a patrně právě na tom potom ten proces upadne, když se snažíš do NULL pointeru zkopírovat jiný řetězec.
OW_get(), jak jsem vám radil?
float DejTeplotu(string OW)
{
float vystup;
vystup = 0;
//cout << "OW:"<< OW << "delka:" << OW.length() << endl;
if (OW.length() == 16)
{
char * buf;
size_t s ;
string cesta = "/";
cesta += OW;
cesta += "/temperature";
if (OW_init("/dev/i2c-1") >= 0)
{
OW_set_error_print("2");
OW_set_error_level("6");
// OW_get("/10.99A689020800/temperature",&buf,&s) ;
if (OW_get(cesta.c_str(),&buf,&s) >=0)
{
vystup = stof(buf);
free(buf);
OW_finish() ;
} else
{
cout << "Chyba pri ziskavani teploty z cidla: " << OW << endl;
}
}else
{
cout << "Chyba pri inicializaci sbernice!" << endl;
}
}else
{
cout << "Neplatny nazev cidla!" << endl;
}
return vystup;
}
Pominu-li coding style, který se mi moc nelíbí a navíc ani není konzistentní, měl bych výhrady hlavně ke zpracování chyb. Dojde-li k chybě, měla by funkce buď vyhodit výjimku (když už používáte C++, proč nevyužít jeho výhod?) nebo chybu signalizovat volajícímu (typicky návratovou hodnotou). Varianta, kdy funkce natvrdo vypíše chybu na chybový výstup a pak vrátí jakousi nahodilou hodnotu, kterou by dost možná mohla vrátit i pokud je všechno v pořádku, je velmi nešťastný. Jak má volající poznat, jestli dostal smysluplnou hodnotu nebo jestli došlo k chybě?
Výjimky. Je to přehledné, pohodlné a můžete si snadno zvolit, kde se bude na chybu reagovat a jaké informace je tam potřeba předat. Samozřejmě za to platíte určitým overheadem, který ale u tohoto typu aplikace nebude nijak tragický.
Jinak samozřejmě můžete použít léty prověřenou klasiku: teplota se bude ukládat do bufferu, na který dostanete pointer (v C++ můžete použít referenci) a funkce bude vracet jako návratovou hodnotu kód chyby (nebo aspoň bool OK/chyba).
for (i = 0; i < strlen(prac); i++)
{
//cout << prac[i] << endl;
cesta[i+1] = prac[i];
}
cesta[i+1] = 0;
Tiskni
Sdílej: