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 17:11 | Humor

    Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.

    Ladislav Hagara | Komentářů: 1
    dnes 16:11 | Komunita

    Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | IT novinky

    Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.

    Ladislav Hagara | Komentářů: 3
    včera 13:33 | Komunita

    Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    25.10. 15:44 | Zajímavý software

    Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.

    Ladislav Hagara | Komentářů: 0
    25.10. 05:11 | Zajímavý článek

    Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.

    karkar | Komentářů: 9
    24.10. 19:55 | Nová verze

    Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.

    Ladislav Hagara | Komentářů: 0
    24.10. 13:33 | Bezpečnostní upozornění

    Specialisté společnosti ESET zaznamenali útočnou kampaň, která cílí na uživatele a uživatelky v Česku a na Slovensku. Útočníci po telefonu zmanipulují oběť ke stažení falešné aplikace údajně od České národní banky (ČNB) nebo Národní banky Slovenska (NBS), přiložení platební karty k telefonu a zadání PINu. Malware poté v reálném čase přenese data z karty útočníkovi, který je bezkontaktně zneužije u bankomatu nebo na platebním terminálu.

    Ladislav Hagara | Komentářů: 21
    24.10. 13:22 | Upozornění

    V Ubuntu 25.10 byl balíček základních nástrojů gnu-coreutils nahrazen balíčkem rust-coreutils se základními nástroji přepsanými do Rustu. Ukázalo se, že nový "date" znefunkčnil automatickou aktualizaci. Pro obnovu je nutno balíček rust-coreutils manuálně aktualizovat.

    Ladislav Hagara | Komentářů: 13
    24.10. 04:55 | Komunita

    VST 3 je nově pod licencí MIT. S verzí 3.8.0 proběhlo přelicencování zdrojových kódů z licencí "Proprietary Steinberg VST3 License" a "General Public License (GPL) Version 3". VST (Virtual Studio Technology, Wikipedie) je softwarové rozhraní pro komunikaci mezi hostitelským programem a zásuvnými moduly (pluginy), kde tyto moduly slouží ke generování a úpravě digitálního audio signálu.

    Ladislav Hagara | Komentářů: 1
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (47%)
     (20%)
     (19%)
     (23%)
     (17%)
     (21%)
     (17%)
     (18%)
    Celkem 279 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: strncpy přidává '\031' – bug v glibc?

    stativ avatar 27.12.2009 11:29 stativ | skóre: 54 | blog: SlaNé roury
    strncpy přidává '\031' – bug v glibc?
    Přečteno: 441×
    Právě jsem narazil na prapodivný problém, kdy mi v jednom konkrétním případě strncpy přidává znak '\031' (end of medium?) na konec řetězce.

    Dělá mi to na desktopu s Archem (32 bit) – jak s gcc 4.4.2 tak s clang 2.6, tudíž předpokládám, že pokud bug není u mě tak bude nejspíš v glibc (2.11.1). Když jsem to ale zkoušel na mašině s OpenSuSE (64bit) tak to jelo správně.

    Ukázka kódu, který blbne:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main() {
        char *test = "x^3 + (-x)^5";
        /*char *test = "sin(123 + 45 * ln(27 - 6))";*/
        char *str = malloc(strlen(test) * sizeof(char));
    
        strncpy(str, test, strlen(test));
    
        printf("%s\n",str);
    }
    
    Čekal bych, že na výstupu bude: x^3 + (-x)^5

    ale já dostanu: x^3 + (-x)^5\031

    Zvláštní je, že s jiným řetězcem (např. tím zakomentovaným to funguje).

    Můj dotaz je – je bug u mě, nebo jinde?
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

    Řešení dotazu:


    Odpovědi

    27.12.2009 11:40 0-58glfsdhesr
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    "Prekladac automaticky pridava ke kazde konstatne typu *char znak \0, aby funkce poznaly, kde konci" (volne podle K&R). Avsak strlen vraci delku bez \0 (man 3 strlen).

    V tomto pripade by mozna stalo za to pouzit funkci strdup, ale nekdy se hodi si pamet alokovat rucne.

    Doporucuju na ten kod spustit valgrind, ktery odhali chyby podobneho typu.
    stativ avatar 27.12.2009 11:49 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Jop, přesně tak. Ani mě nenapadlo, že bych mohl takovou chybu udělat (zvlášť, když jinde to mám správně).
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    stativ avatar 27.12.2009 11:46 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Safra, já zapomněl na plus jedna.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    27.12.2009 16:48 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Měl byste se raději podívat na význam základních operátorů v C++, protože sizeof(test) vrátí délku celého pole, namísto volání strlen(test), násobení sizeof(char) a přičítání jedničky. Nejen, že použití sizeof(test) je elegantnější, ale narozdíl od Vámi prezentovaného řešení má konstatní složitost (strlen(test) má lineární složitost!).
    Pochybnost, nejistota - základ poznání
    AraxoN avatar 27.12.2009 17:59 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Neviem ako v C++, ale v C sizeof(test) vráti veľkosť dátového typu "smerník".
    27.12.2009 18:25 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    protože sizeof(test) vrátí délku celého pole
    Jenže zde jde o pointer! Velikost celého pole může sizeof vrátit pouze pokud jde o pole v době deklarace. Prostě:
    int a[10];
    int *pa = a;
    // sizeof(a) = 10*sizeof(int) != sizeof(pa) = sizeof(void *)
    
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    stativ avatar 27.12.2009 19:15 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    To je pěkný, ale je to pointer. Navíc sizeof vrací alokovanou paměť, ne tu, která je řetězcem reálně obsazená.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

    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.