Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »David Malcolm se na blogu vývojářů Red Hatu rozepsal o vybraných novinkách v GCC 16, jež by mělo vyjít v nejbližších dnech. Vypíchnuta jsou vylepšení čitelnosti chybových zpráv v C++, aktualizovaný SARIF (Static Analysis Results Interchange Format) výstup a nová volba experimental-html v HTML výstupu.
Byla vydána verze R14.1.6 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Občas se hodí zavolat vlastní verzi ioctl() bez rekompilace binárky (např. pro ladící účely a teprve poté zavolat reálné ioctl()), jako ukázku přikládám návrat MAC adresy:
$ ./get_mac
00:0a:e4:a9:36:d8
$ LD_PRELOAD="libwrap_ioctl.so.1.0" ./get_mac
0a:0b:0c:0d:0e:0f
Makefile:
all: libwrap_ioctl.so get_mac
libwrap_ioctl.so: ioctlw.c
gcc -Wall -fPIC -shared -Wl,-soname,libwrap_ioctl.so.1 \
-I/usr/lib/oss/include -I/usr/include \
-o libwrap_ioctl.so.1.0 -ldl ioctlw.c
get_mac: get_mac.c
gcc -Wall -o get_mac get_mac.c
ioctlw.c:
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <net/if.h>
#define SIOCGIFHWADDR 0x8927 /* Get hardware address */
static int (*next_ioctl)(int fd, int request, void *data) = NULL;
int ioctl(int fd, int request, void *data)
{
struct ifreq ifr;
char *msg;
if (request == SIOCGIFHWADDR) {
memcpy(&ifr, data, sizeof(struct ifreq));
ifr.ifr_hwaddr.sa_data[0] = 0x0A;
ifr.ifr_hwaddr.sa_data[1] = 0x0B;
ifr.ifr_hwaddr.sa_data[2] = 0x0C;
ifr.ifr_hwaddr.sa_data[3] = 0x0D;
ifr.ifr_hwaddr.sa_data[4] = 0x0E;
ifr.ifr_hwaddr.sa_data[5] = 0x0F;
memcpy(data, &ifr, sizeof(struct ifreq));
return 0;
}
if (next_ioctl == NULL) {
fprintf(stderr, "ioctl: wrapping ioctl\n");
fflush(stderr);
next_ioctl = dlsym(RTLD_NEXT, "ioctl");
fprintf(stderr, "next_ioctl = %p\n", next_ioctl);
fflush(stderr);
if ((msg = dlerror()) != NULL) {
fprintf(stderr, "ioctl: dlopen failed: %s\n", msg);
fflush(stderr);
exit(1);
}
else {
fprintf(stderr, "ioctl: wrapping done\n");
}
fflush(stderr);
}
return next_ioctl(fd, request, data);
}
//void *dlsym(void *handle, const char *symbol)
//{
// void* result = __libc_dlsym(handle, symbol);
//
// printf("%s\n", symbol);
//
// return result;
//}
get_mac.c
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
int main()
{
int fd;
struct ifreq ifr;
fd = socket(AF_INET, SOCK_DGRAM, 0);
ifr.ifr_addr.sa_family = AF_INET;
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ioctl(fd, SIOCGIFHWADDR, &ifr);
close(fd);
/* display result */
printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
(unsigned char)ifr.ifr_hwaddr.sa_data[0],
(unsigned char)ifr.ifr_hwaddr.sa_data[1],
(unsigned char)ifr.ifr_hwaddr.sa_data[2],
(unsigned char)ifr.ifr_hwaddr.sa_data[3],
(unsigned char)ifr.ifr_hwaddr.sa_data[4],
(unsigned char)ifr.ifr_hwaddr.sa_data[5]);
return 0;
}
Zdroje:
Using LD_PRELOAD libraries and glibc backtrace function for debugging
Simple sample of getting MAC address information
Wrapping dlsym()
Tiskni
Sdílej:
Funkce ioctl() je v libc:
$ readelf -a /lib/i686/cmov/libc.so.6 |grep ioctl
1361: 000d8040 63 FUNC WEAK DEFAULT 11 ioctl@@GLIBC_2.0
Co říká:
$ ldd tvoje_binarka
linux-gate.so.1 => (0xb7f30000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7db8000)
/lib/ld-linux.so.2 (0xb7f31000)
Myslím, že i Tvá binárka bude využívat libc, i když ostatní knihovny jsou přilinkovány staticky.
Žiaľ, nie. Nesie so sebou vlastnú C knižnicu, ldd na ňu vôbec nefunguje.