Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.
#HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.
Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.
Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.0.0. Přehled novinek v poznámkách k vydání.
Nejvyšší soud podpořil novináře Českého rozhlasu. Nařídil otevřít spor o uchovávání údajů o komunikaci (data retention). Uvedl, že stát odpovídá za porušení práva EU, pokud neprovede řádnou transpozici příslušné směrnice do vnitrostátního práva.
Minulý týden proběhl u CZ.NIC veřejný test aukcí domén. Včera bylo publikováno vyhodnocení a hlavní výstupy tohoto testu.
Byla vydána nová verze 3.5.0 svobodné implementace protokolu RDP (Remote Desktop Protocol) a RDP klienta FreeRDP. Přehled novinek v ChangeLogu. Opraveno bylo 6 bezpečnostních chyb (CVE-2024-32039, CVE-2024-32040, CVE-2024-32041, CVE-2024-32458, CVE-2024-32459 a CVE-2024-32460).
Google Chrome 124 byl prohlášen za stabilní. Nejnovější stabilní verze 124.0.6367.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 22 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Byla vydána nová verze 9.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Novinkou je vlastní repozitář DietPi APT.
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: