V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.
Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.
Multimediální přehrávač mpv byl vydán ve verzi 0.42.0. Jde o větší balík změn po bezmála roce. Mimo jiné se lépe integruje s Waylandem nebo rozšiřuje podporu DVD/Blu-ray, např. umožňuje přehrávat rovnou obrazy médií (soubory iso).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.
Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.
Byla vydána verze R14.1.7 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Bazzite (Wikipedie), tj. linuxová distribuce vycházející z Fedora Linuxu a optimalizována pro hraní počítačových her, byla vydána ve verzi 45. S Open Gaming Collective (OGC) jádrem a novým Easy Anti-Cheatem pro Linux (EAC Linux v2).
MikroTik zveřejnil vlastní bezpečnostní upozornění potvrzující, že zranitelnost linuxového jádra postihuje také RouterOS 7. Jde o use-after-free při zpracování IPv4 TCP spojení s IP options. Zranitelnost se týká provozu směřujícího na TCP službu samotného routeru, nikoli paketů, které router pouze přeposílá. Opraveno v long-term od 7.24.6, v stable od 7.25.1 a devel od 7.26beta5.
argv[] do připraveného pole. Ovšem tištění platných parametrů problém nedělá. Zde je část zdrojového kódu:
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
int main(int argc, char * argv[])
{
char argvtemp[100];
strcpy(argvtemp,argv[1]);
.
.
.
Při spuštění dělá toto:
~$ ./program --parametr="Super věc"
Neoprávněný přístup do paměti (SIGSEGV)
Když se na to podívám přes gdb tak uvidím toto:
Breakpoint 1, main (argc=1, argv=0xbf864434) at desccreator.c:8
8 strcpy(argvtemp,argv[1]);
(gdb) step
Program received signal SIGSEGV, Segmentation fault.
0xb7e22cc0 in strcpy () from /lib/libc.so.6
A když napíši tohle namísto strcpy():
printf("%s\n",argv[1]);
přeložím a spustím, dostanu normálně:
~$ ./program --parametr="Super věc"
--parametr="Super věc"
Nevíte někdo co s tím? Už si opravdu nevím rady. Připadá mi to na hlavu postavené, strcpy() přece z argv[] jen čte stejně jako printf(), tak proč u kopírování dochází k chybě a u tištění ne? Do programu takhle načítám data poprvé takže možná že dělám někde chybu. Budu vděčný za každou radu.
argc funkce main. Dále je třeba dát pozor na délku řetězce.
char *p;
…
if (argc >= 1) {
p = malloc(strlen(argv[1])+1);
if (p != NULL) {
strcpy(p, argv[1]);
}
}
…
argc >= 2.
Breakpoint 1, main (argc=1, argv=0xbf864434) at desccreator.c:8argc=1 a ty sa snazis citat z argv[1].
gdb už ano. Proto ten argc=1, což jsem si měl taky všimnout. Takže během všelijakých úprav se zdrojovým kódem jsem dostávál zkreslené informace o pravém původci chyby což v mém případě byla malá chyba v jedné funkci kterou jsem si napsal a chtěl rychle otestovat, proto ten nedotažený kód. Ale jak vidno měl jsem ho přece v tomto případě dotáhnout, dříve bych přišel kde dělám chybu. Taková stupidní chyba - připadám si jak blbec. Velice díky za rady.
Tiskni
Sdílej: