Turris OS, operační systém pro síťová zařízení Turris postavený na OpenWrt, byl vydán v nové verzi 6.3.0. Vývojáři upozorňují, že Netmetr byl nahrazen LibreSpeedem, viz příspěvek na blogu CZ.NIC.
Byl vydán xorg-server 21.1.8 a xwayland 22.1.9 a 23.1.1. Řešena je zranitelnost CVE-2023-1393 využitelná k lokální eskalaci práv.
Byla vydána nová verze 10 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu.
Ubuntu Cinnamon bude od Ubuntu 23.04 oficiální odnoží Ubuntu (návrh, schválení).
Byla vydána nová major verze 5.0 účetního softwaru GnuCash (Wikipedie). Ve formátu Flatpak je již k dispozici na Flathubu.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Alwa's Awakening (ProtonDB).
Byla vydána verze 3.28.0 2D CAD (computer-aided design) softwaru QCAD (Wikipedie). Přehled novinek v Changelogu.
Změna ve vedení společnosti SUSE. Dosavadní CEO Melissa Di Donato odstoupila. Od 1. května je novým CEO Dirk-Peter van Leeuwen, bývalý Senior Vice President a General Manager ve společnosti Red Hat.
CyberChef je webová aplikace pro analýzu dat a jejich kódování a dekódování, šifrování a dešifrování, kompresi a dekompresi, atd. Často je využívaná při kybernetických cvičeních a CTF (Capture the Flag). Vydána byla nová major verze 10 (aktuálně 10.4.0). Přehled novinek v Changelogu.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch OTA-1 Focal založené na Ubuntu 20.04 Focal Fossa.
/* * This function is called when /proc is written */ static ssize_t procfs_write(struct file *file, const char *buffer, size_t len, loff_t * off) { if ( len > PROCFS_MAX_SIZE ) { procfs_buffer_size = PROCFS_MAX_SIZE; } else { procfs_buffer_size = len; } if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { return -EFAULT; } printk(KERN_INFO "procfs_write: write %lu bytes\n", procfs_buffer_size); return procfs_buffer_size; }- pokud na místo
copy_from_user
dám strncpy
, vše (alespoň zdánlivě) funguje.All kernel code runs in the kernel virtual memory address space. There are times, that the kernel virtual memory address space contains pieces of a user process's address space. This is so that system calls can access arguments passed using pointers. A classic example are the read() and write() system calls, which need to transfer data from kernel buffers into a user process address space.
copy_to_user
/copy_from_user
, resp. put_user
/get_user
i pokud jde o jednoduché read/write jako například s /proc filesystémem?copy_to_user/
copy_from_user
.
Vyssie uvedeny priklad s procfs_write
kopiruje data z User Space do Kernel Space pomocou copy_to_user
, takze potrebuje zistit, kam "skutocne" User Space pointer ukazuje. To, ze strncpy
ako tak funguje, je len zhoda nahod.
Inak povedane, ak napriklad User Space pointer buffer
ukazuje na User Space adresu 123h , tak funkcia copy_from_user
hovori kernelu, aby pointer buffer
nebral ako pointer na Kernel Space adresu 123h (ako by to bolo v pripade strncpy
).
strncpy
funguje.
strncpy
od userspace procesu funguje.read()
z toho processu má přístup do bufferu v segmentu kernelu), ale při "zápisu" už se data musí přenášet.write()
do bufferu v kernelspace z userspace aplikace. Rád se dozvědel pravdu, pokud ji někdo zná.
Tiskni
Sdílej: