Ondřej Filip publikoval reportáž z ceremonie podpisu kořenové zóny DNS. Zhlédnout lze také jeho nedávnou přednášku Jak se podepisuje kořenová zóna Internetu v rámci cyklu Fyzikální čtvrtky FEL ČVUT.
Společnost BenQ uvádí na trh novou řadu monitorů RD určenou pro programátory. První z nich je RD240Q.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem nadále zůstává Frontier od HPE (Cray) s výkonem 1,206 exaFLOPS. Druhá Aurora má oproti loňsku přibližně dvojnásobný počet jader a dvojnásobný výkon: 1,012 exaFLOPS. Novým počítačem v první desítce je na 6. místě Alps. Novým českým počítačem v TOP500 je na 112. místě C24 ve Škoda Auto v Mladé Boleslavi. Ostravská Karolina, GPU
… více »GHC (Glasgow Haskell Compiler, Wikipedie), tj. překladač funkcionálního programovacího jazyka Haskell (Wikipedie), byl vydán ve verzi 9.10.1. Přehled novinek v poznámkách k vydání.
Po 9 týdnech vývoje od vydání Linuxu 6.8 oznámil Linus Torvalds vydání Linuxu 6.9. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna. Později také na Linux Kernel Newbies.
Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.
Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.
Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.
Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].
V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.
Debian GNU/Linux Squeeze x86_64 obsahuje verzi Bashe, ve kterém se projevuje chyba při expanzi \W, v proměné $PS1, např. při vstupu do adresáře na první úrovni o velikosti čtyři znaky.
$ PS1="\W$ " $ cd /boot bott$ cd /home hmee$ cd /proc pocc$
Bugfix, vypadá následovně (String corruption using \W in prompt):
t = strrchr (t_string, '/'); if (t) - strcpy (t_string, t + 1); + memmove (t_string, t + 1, sizeof(t));
Na první pohled by si jeden řekl, v čem je problém, i při pohledu do implementace vypadá fce strcpy() tak jak jsem si jí představoval.
$ apt-get source eglibc $ cd eglibc-2.11.2/string/ $ cpp strcpy.c typedef long int ptrdiff_t; char * strcpy (dest, src) char *dest; const char *src; { char c; char * s = (char *) (src); const ptrdiff_t off = (dest) - s - 1; size_t n; do { c = *s++; s[off] = c; } while (c != '\0'); n = s - src; (void) (src + n); (void) (dest + n); return dest; }
Ale v manuálové stránce k fci strcpy() píší, že se vstupní řetězce nesmí překrývat. Což mě nasměruje ke spuštění:
$ find -name 'strcpy.*' ./sysdeps/powerpc/powerpc32/strcpy.S ./sysdeps/powerpc/powerpc64/strcpy.S ./sysdeps/ia64/strcpy.S ./sysdeps/i386/i586/strcpy.S ./sysdeps/x86_64/strcpy.S ./sysdeps/x86_64/multiarch/strcpy.S ./sysdeps/s390/s390-64/strcpy.S ./sysdeps/s390/s390-32/strcpy.S ./sysdeps/sparc/sparc32/sparcv9/strcpy.S ./sysdeps/sparc/sparc32/strcpy.S ./sysdeps/sparc/sparc64/strcpy.S ./string/strcpy.c ./ports/sysdeps/vax/strcpy.s ./ports/sysdeps/alpha/strcpy.S
Při letmém pohledu do ./sysdeps/x86_64/strcpy.S
už je nasnadě, že zakopaný pes je v optimalizacích pro architekturu x86_64, tj. implementace fce strcpy() přímo v assembleru.
Ponaučení, je lepší se přesvědčit, alespoň v manuálové stránce, že zamýšlené použití fce je přípustné, nežli střílet od boku.
Problém lze obejít tak, že se místo '\W' použije:
'$(basename $PWD)'
Tiskni Sdílej:
Problém lze obejít tak, že se místo '\W' použije:'$(basename $PWD)'
To bych nedoporučoval, protože by to znamenalo spuštění nového programu při každém zobrazení promptu. Praktičtější by bylo '${PWD##*/}'
(void) (src + n);
(void) (dest + n);
?
Jak je naznačeno, kód je prohnaný preprocesorem, původně je tam makro, které umožňuje zkompilovat ladící verzi s aktivovanou kontrolou hranic ukazatelů.
(void) CHECK_BOUNDS_HIGH (src + n); (void) CHECK_BOUNDS_HIGH (dest + n);
dest > src
). 2. strcpy()
je IIRC jedna z funkcí, které dostatečně nové verze gcc nahrazují vlastní optimalizovanou implementací, takže ani ta assemblerová verze ze zdrojáků glibc nemusí být tou, která se nakonec skutečně použije.