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í
×

dnes 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 0
včera 23:44 | Bezpečnostní upozornění

V Linuxu byla nalezena bezpečnostní chyba CVE-2017-15265 zneužitelná k lokální eskalaci práv. Jedná se o chybu v části ALSA (Advanced Linux Sound Architecture).

Ladislav Hagara | Komentářů: 0
včera 22:44 | Komunita

Greg Kroah-Hartman informuje na svém blogu, že do zdrojových kódu linuxového jádra bylo přidáno (commit) prohlášení Linux Kernel Enforcement Statement. Zdrojové kódy Linuxu jsou k dispozici pod licencí GPL-2.0. Prohlášení přidává ustanovení z GPL-3.0. Cílem je chránit Linux před patentovými trolly, viz například problém s bývalým vedoucím týmu Netfilter Patrickem McHardym. Více v často kladených otázkách (FAQ).

Ladislav Hagara | Komentářů: 1
včera 22:04 | Pozvánky

Rádi bychom vás pozvali na přednášku o frameworku Avocado. Jedná se o testovací framework další generace, inspirovaný Autotestem a moderními vývojovými nástroji, jako je třeba git. Přednáška se bude konat 23. října od 17 hodin na FEL ČVUT (Karlovo náměstí, budova E, auditorium K9 – KN:E 301). Více informací na Facebooku.

… více »
mjedlick | Komentářů: 0
včera 21:44 | Bezpečnostní upozornění

Nový útok na WPA2 se nazývá KRACK a postihuje prakticky všechna Wi-Fi zařízení / operační systémy. Využívá manipulace s úvodním handshake. Chyba by měla být softwarově opravitelná, je nutné nainstalovat záplaty operačních systémů a aktualizovat firmware zařízení (až budou). Mezitím je doporučeno používat HTTPS a VPN jako další stupeň ochrany.

Václav HFechs Švirga | Komentářů: 1
15.10. 00:11 | Zajímavý projekt

Server Hackaday představuje projekt RainMan 2.0, aneb jak naučit Raspberry Pi 3 s kamerovým modulem pomocí Pythonu a knihovny pro rozpoznávání obrazu OpenCV hrát karetní hru Blackjack. Ukázka rozpoznávání karet na YouTube. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
14.10. 15:11 | IT novinky

Online obchod s počítačovými hrami a elektronickými knihami Humble Bundle byl koupen společností IGN. Dle oficiálních prohlášení by měl Humble Bundle dále fungovat stejně jako dosud.

Ladislav Hagara | Komentářů: 7
14.10. 06:00 | Zajímavý článek

Brendan Gregg již v roce 2008 upozornil (YouTube), že na pevné disky se nemá křičet, že jim to nedělá dobře. Plotny disku se mohou rozkmitat a tím se mohou prodloužit časy odezvy pevného disku. V září letošního roku proběhla v Buenos Aires konference věnovaná počítačové bezpečnosti ekoparty. Alfredo Ortega zde demonstroval (YouTube, pdf), že díky tomu lze pevný disk použít také jako nekvalitní mikrofon. Stačí přesně měřit časy odezvy

… více »
Ladislav Hagara | Komentářů: 7
13.10. 14:33 | Komunita

Společnost SUSE natočila a na YouTube zveřejnila dva nové videoklipy: 25 Years - SUSE Music Video (7 Years parody) a Linus Said - Music Parody (Momma Said).

Ladislav Hagara | Komentářů: 6
13.10. 12:55 | Zajímavý projekt

Autoři stránky Open Source Game Clones se snaží na jednom místě shromažďovat informace o open source klonech proprietárních počítačových her. Přidat další hry nebo návrhy na zlepšení lze na GitHubu. Na stránce Open Source Text Games jsou shromažďovány informace o open source textových hrách. Opět lze k vylepšení nebo doplnění stránky použít GitHub.

Ladislav Hagara | Komentářů: 1
Těžíte nějakou kryptoměnu?
 (6%)
 (2%)
 (15%)
 (76%)
Celkem 717 hlasů
 Komentářů: 24, poslední 27.9. 08:30
    Rozcestník

    Dotaz: Segmentation fault při kopírování argv[]

    21.7.2008 00:10 Snur | skóre: 5
    Segmentation fault při kopírování argv[]
    Přečteno: 439×
    Zdravím. Vytvářím v céčku aplikaci která bude číst vstup přes argumenty zadané v příkazové řádce. Mám však problém s kopírováním parametrů z 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.

    Odpovědi

    21.7.2008 00:33 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Nevidím důvod, proč by měl program padat, když je mu zadán parametr kratší než 99 znaků, což se v tomto případě děje, i tak je v něm ale chyba. Nelze dopředu zaručit, že bude nastaven jiný než první prvek pole, počet parametrů programu udává parametr 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]);
      }
    }
    …
    
    21.7.2008 00:34 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Měl bych si dávat větší pozor, v podmínce má být samozřejmě argc >= 2.
    21.7.2008 00:44 Semo | skóre: 44 | blog: Semo
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Netusim, cim je to sposobene, ale vsimni si vypis breakpointu:
    Breakpoint 1, main (argc=1, argv=0xbf864434) at desccreator.c:8
    argc=1 a ty sa snazis citat z argv[1].
    If you hold a Unix shell up to your ear, you can you hear the C.
    21.7.2008 03:43 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Ten kód je funkční (ale v pořádku není, viz předchozí příspěvky). Spíš si myslím, že v tom programu máš ještě jednu chybu, která vyvolá SIGSEGV, i když program spustíš s parametrem (nebo leda že by sis ten výpis po spuštění vymyslel), ale když program debuguješ, zapomeneš tam ten parametr dát a program slítne hned na strcpy :-)
    21.7.2008 06:07 pakanek | skóre: 28 | Vyškov
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Me ten tvuj kod hazi SIGSEGV jen pokud jej spustim bez parametru. Pokud jej spustim s parametrem, tak je program v poradku.
    Všechno dobré je pro něco zlé.
    21.7.2008 12:06 Snur | skóre: 5
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Máte všichni pravdu.U spouštění programu jsem na argumenty nezapomínal, ovšem během ladění v 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.

    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.