O víkendu (15:00 až 23:00) probíhá EmacsConf 2023, tj. online konference vývojářů a uživatelů editoru GNU Emacs. Sledovat ji lze na stránkách konference. Záznamy jsou k dispozici přímo z programu.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek i s náhledy aplikací v Týden v GNOME a Týden v KDE.
Organizace Apache Software Foundation (ASF) vydala verzi 20 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Desktopové prostředí Cinnamon, vyvíjené primárně pro distribuci Linux Mint, dospělo do verze 6.0. Seznam změn obsahuje především menší opravy a v říjnovém přehledu novinek v Mintu avizovanou experimentální podporu Waylandu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzích 2.2.2 a 2.1.14. Přináší důležitou opravu chyby vedoucí k možnému poškození dat.
V ownCloudu byly nalezeny tři kritické zranitelnosti: CVE-2023-49103, CVE-2023-49104 a CVE-2023-49105 s CVSS 10.0, 8.7 a 9.8. Zranitelnost CVE-2023-49103 je právě využívána útočníky. Nextcloudu se zranitelnosti netýkají.
I letos vychází řada ajťáckých adventních kalendářů. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2023. Pro programátory v Perlu je určen Perl Advent Calendar 2023. Zájemci o UX mohou sledovat Lean UXmas 2023. Pro zájemce o kybernetickou bezpečnost je určen Advent of Cyber 2023…
Byla vydána verze 2.12 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 23.11 Topi. Přehled novinek v Changelogu.
Po 4 měsících vývoje byla vydána nová verze 4.2 multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu a na YouTube.
Řešení dotazu:
$ echo 'int main() { printf("Ret: %i\n", system("perl -e \"exit(17);\"") >> 8); }' | gcc -w -x c - && ./a.out
Ret: 17
$ echo 'int main() { printf("Ret: %i\n", system("perl -e \"17;\"") >> 8); }' | gcc -w -x c - && ./a.out
Ret: 0
suster@ubuntu-l1:~/Production/TSMReport$ ./tsm.pl ...(nejaky vystup)... suster@ubuntu-l1:~/Production/TSMReport$ echo $? 1 suster@ubuntu-l1:~/Production/TSMReport$ ./tsm ...(nejaky vystup)... suster@ubuntu-l1:~/Production/TSMReport$ echo $? 0 cat tsm.c int main(int argc, char *argv[]) { int i; char run_this [] = "perl /home/jsuster/Production/TSMReport/tsm.pl"; setuid( 0 ); return system(run_this); }
$ echo 'int main() { return 256; }' | gcc -w -x c - && ./a.out ; echo $?
0
Navratovy kod se da zjistit pomoci makra WEXITSTATUS (doporucuju se podivat na "man 2 wait").
Uplne nejlepsi je neco takoveho:
status = system(command);
if(WIFEXITED(status)) {
printf("Command %s exited with return code %i\n", command, WEXITSTATUS(status));
} else {
printf("Command %s ended unexpectedly\n", command,);
}
$ echo 'int main() { printf("Ret: %i\n", system("perl -e \"exit(17);\"") >> 8); }' | gcc -w -x c - && strace -f ./a.out
...
[pid 11921] exit_group(17) = ?
Process 11920 resumed
Process 11921 detached
<... waitpid resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 17}], 0) = 11921
...
cp /usr/bin/vim perl PATH=.:$PATH ./tsm
Tiskni
Sdílej: