)]}'
{
  "log": [
    {
      "commit": "2f9744cd1c3b05b4c23616ef5b6987dbaadfe583",
      "tree": "111e158e5a05c7b8c9730eb77fd595f182efa670",
      "parents": [
        "521bd11450ea68d79dce9ee88a49cefa399e0cbf"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 02:22:53 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 02:26:15 2026 +0100"
      },
      "message": "Release v4.9.7\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "521bd11450ea68d79dce9ee88a49cefa399e0cbf",
      "tree": "ebb6795054380380f476d417a5e656c7ec54b1d0",
      "parents": [
        "1cd6211f7278581dc2866d8ab751ed4d77bd9539"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Fri Oct 30 02:12:53 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 02:12:53 2026 +0100"
      },
      "message": "ARP/NDP: avoid adding records for multicast addresses and our addresses\n"
    },
    {
      "commit": "1cd6211f7278581dc2866d8ab751ed4d77bd9539",
      "tree": "074dea8d523cfcb2ee01368d2560e1b8a23dcc4e",
      "parents": [
        "bad35bd3b529dc47aa109980a69a36da7848ab76"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Fri Oct 30 02:05:21 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 02:05:21 2026 +0100"
      },
      "message": "bootp: Fix endianness of addition\n"
    },
    {
      "commit": "bad35bd3b529dc47aa109980a69a36da7848ab76",
      "tree": "ac9eb4cf4103a95d25b4a8d1653629a8b0c1cf9c",
      "parents": [
        "21b33a6c5588af9f58d15e528fdc1019452708e4"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Fri Oct 30 01:44:24 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 01:44:24 2026 +0100"
      },
      "message": "if_output: Fix Queue Pointer Corruption and Crash\n"
    },
    {
      "commit": "21b33a6c5588af9f58d15e528fdc1019452708e4",
      "tree": "e279ed045f06de242e5509f874d722743810bfce",
      "parents": [
        "2ba32bec50d5f4f8e3b7ea173b5d623f8affb182"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Fri Oct 30 01:40:02 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 01:40:02 2026 +0100"
      },
      "message": "icmp_forward_error: Fix Out-of-Bounds Heap Read \u0026 Information Disclosure\n"
    },
    {
      "commit": "2ba32bec50d5f4f8e3b7ea173b5d623f8affb182",
      "tree": "6f27ca3a12eaaea45bb16fa5574cfea5a48a0fc5",
      "parents": [
        "f220c40ab1ce9e28c29cd51c470e894cef97591d"
      ],
      "author": {
        "name": "João Mota",
        "email": "joao.mota@nulvex.com",
        "time": "Fri Oct 30 01:32:07 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Oct 30 01:34:04 2026 +0100"
      },
      "message": "ip6_icmp: Fix memory leak on ipv6 ping\n\nReported-by: Nulvex Research Team (Nulvex LLC), https://nulvex.com\n"
    },
    {
      "commit": "f220c40ab1ce9e28c29cd51c470e894cef97591d",
      "tree": "35d45e7b9a5f6ca3a0e050bd61af473314678977",
      "parents": [
        "15ae3c8495d039cefa989c31108e2cb5b26f481b",
        "3c1357aec3604ea537958a6b4cf071c05239cec0"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:39:01 2026 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:39:01 2026 +0000"
      },
      "message": "Merge branch \u0027valgrind\u0027 into \u0027master\u0027\n\nAdd valgrind CI profile\n\nSee merge request slirp/libslirp!171"
    },
    {
      "commit": "3c1357aec3604ea537958a6b4cf071c05239cec0",
      "tree": "35d45e7b9a5f6ca3a0e050bd61af473314678977",
      "parents": [
        "15ae3c8495d039cefa989c31108e2cb5b26f481b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 15:35:05 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 15:37:09 2026 +0100"
      },
      "message": "Add valgrind CI profile\n"
    },
    {
      "commit": "15ae3c8495d039cefa989c31108e2cb5b26f481b",
      "tree": "3d94c87dd59d6a3df301404517a2b8ee7c2d4c75",
      "parents": [
        "ade3b8743f089fe47008fff163d0d27b0997fae7"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 15:13:46 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 15:29:17 2026 +0100"
      },
      "message": "Fix build with llvm\n"
    },
    {
      "commit": "ade3b8743f089fe47008fff163d0d27b0997fae7",
      "tree": "3da89865db97652e821297de1c68ab94e47533f9",
      "parents": [
        "6b63991abd74d124ff9012efd58da3c9e44c5c05",
        "dbb38b017b90bf3d0eb90c2aef2590bb7fe52f18"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:07:29 2026 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:07:29 2026 +0000"
      },
      "message": "Merge branch \u0027fuzz+ubsan\u0027 into \u0027master\u0027\n\nAlso use UBSan on fuzzing\n\nSee merge request slirp/libslirp!169"
    },
    {
      "commit": "dbb38b017b90bf3d0eb90c2aef2590bb7fe52f18",
      "tree": "3da89865db97652e821297de1c68ab94e47533f9",
      "parents": [
        "6b63991abd74d124ff9012efd58da3c9e44c5c05"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:52:02 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 27 14:52:02 2026 +0100"
      },
      "message": "Also use UBSan on fuzzing\n"
    },
    {
      "commit": "6b63991abd74d124ff9012efd58da3c9e44c5c05",
      "tree": "38d5ccf8c0b166ebea00a391daa97a765e2295e0",
      "parents": [
        "ee354fbb2e970f6222fe3409a83b27c510c96e7b"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:28:21 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 20:04:11 2026 +0100"
      },
      "message": "dns: Add runtime DNS configuration APIs\n\nExport the new functions in SLIRP_4.10.\n\nAdd regression tests for ownership, invalid updates, self-assignment,\nexplicit clearing, and configuration version 6 compatibility.\n"
    },
    {
      "commit": "ee354fbb2e970f6222fe3409a83b27c510c96e7b",
      "tree": "16b8dbd5f1c6b65509b2b3676c2b6f2b48c18b32",
      "parents": [
        "476dd3600fd257fd212f6cc2db5395c9ed8dab8a"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:28:21 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 20:04:01 2026 +0100"
      },
      "message": "dns: allow applications to advertise host DNS servers and update DNS settings at runtime.\n\nThis PR adds runtime DNS/domain configuration support and allows\nembedders to advertise real host IPv4 and IPv6 DNS servers to guests. It\nupdates DHCP, DHCPv6, and IPv6 RDNSS router-advertisement generation so\nguests can receive the configured resolver list instead of only the\nvirtual DNS proxy address. The change adds new configuration and setter\nAPIs, so an upstream submission should version the API and document\nnameserver-array ownership rules clearly.\n\nAdd regression tests for oversized DHCPv6 and RDNSS resolver lists.\n"
    },
    {
      "commit": "476dd3600fd257fd212f6cc2db5395c9ed8dab8a",
      "tree": "10d22c567d6f26611c546f5aeacea3eb0ea6e31d",
      "parents": [
        "e77e3bea5ced1005f63d366a451711cc17ce913f"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:28:21 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:50:26 2026 +0100"
      },
      "message": "ndp: allow applications to disable IPv6 default-route advertisements\n\nThis PR adds a configuration option to suppress IPv6 default-route advertisement by sending Router Advertisements with router lifetime zero. It allows guests to keep receiving useful RA information such as prefix or DNS options without installing libslirp as their default IPv6 router. This is needed for restricted or mixed-network setups where IPv6 DNS discovery is desired but IPv6 routing through slirp is not. The option should be documented as disabling the advertised default route, not as disabling RA packets entirely.\n"
    },
    {
      "commit": "e77e3bea5ced1005f63d366a451711cc17ce913f",
      "tree": "ac394a890159c6d0305b2a402d46bc19972d0d08",
      "parents": [
        "f8ccd69ea973b8ed62d90249fb37db80179043b6"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:39:56 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:44:40 2026 +0100"
      },
      "message": "ipv6: allow separate MTU and MRU configuration for IPv6\n\nThis PR adds separate IPv6 MTU and MRU configuration instead of forcing IPv4\nand IPv6 to share one packet-size pair. It applies the IPv6 MTU to IPv6\ninput validation, ICMPv6 Packet Too Big generation, ICMPv6 error quoting,\nIPv6 mbuf allocation, and TCP MSS calculation. This is needed because IPv6\nhas a 1280-byte minimum MTU and may require different sizing behavior from\nIPv4 in NAT configurations.\n\nRename the IPv6 size fields to if_mtu6 and if_mru6. When either is zero,\ninherit the effective if_mtu or if_mru value instead of the fixed default.\n\nRemove the separate IPv6 allocator and size the shared m_get() buffer\npool using MAX(if_mtu, if_mtu6), including reused buffers.\n\nUse if_mtu6 for DHCPv6 response bounds and the initial IPv6 TCP MSS.\nAdd regression tests for inherited values, independent jumbo IPv6 sizes,\npooled-buffer reuse, and configuration version 6 compatibility.\n"
    },
    {
      "commit": "f8ccd69ea973b8ed62d90249fb37db80179043b6",
      "tree": "804d26d560369640a9aa521c1e49e3c9e88e4d14",
      "parents": [
        "e3435de4286b323f5299ccf0a1fc2a01e590aa87"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:36:47 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:38:14 2026 +0100"
      },
      "message": "socket: add configurable IPv4 loopback mapping for guest connections\n\nThis PR adds an explicit IPv4 loopback map that translates selected\nguest-visible virtual-network addresses to selected host loopback\naliases. It also answers ARP for mapped addresses so guests can resolve and\nconnect to those configured endpoints. This is needed for NAT configurations\nthat must expose only specific host loopback services without enabling\nbroad guest access to loopback. The feature is security-sensitive because\nguest-controlled destination addresses influence host-loopback access, so\nmaps must be narrow, opt-in, and disabled when host loopback is disabled.\n\nUse complete struct in_addr addresses in network byte order for both\nendpoints instead of a host offset, removing the /24 assumption. Rename\nthe entry count to lomap_len and document the mapping with an example.\n\nCopy the map into the stack and validate entries: require host loopback\ntargets and distinct guest addresses within the virtual subnet, excluding\nthe network, broadcast, gateway, and DNS proxy addresses. Suppress mapped\nARP replies when disable_host_loopback is enabled.\n\nAdd regression tests for distinct addresses sharing their last octet in\na /16, unmapped addresses, ARP replies, copied ownership, disabled host\nloopback, and configuration version 6 compatibility.\n"
    },
    {
      "commit": "e3435de4286b323f5299ccf0a1fc2a01e590aa87",
      "tree": "460059e078770902be24dc37af58bac7cf528c94",
      "parents": [
        "ebae88a647c89e8505f9558db7510cdee666a16f"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 16:32:35 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:20:16 2026 +0100"
      },
      "message": "ethernet: use a single stable MAC address for slirp gateway traffic\n\nThis PR makes gateway-originated IPv4 and IPv6 traffic use one stable NAT\nMAC address instead of deriving multiple source MACs from IP addresses. It\nupdates ARP replies, ARP requests, IPv4 encapsulation, and IPv6 Ethernet\naddress computation to use the same gateway MAC.\n\nMake the shared MAC opt-in through SlirpConfig.shared_mac in configuration\nversion 7. An all-zero value retains the existing IP-derived MAC addresses;\nolder configuration versions ignore the new field. Copy a supplied unicast\naddress into the stack and reject multicast and broadcast addresses.\n\nUse the configured address consistently in IPv4/IPv6 Ethernet headers,\nARP messages, and NDP router/neighbor messages. Document the VirtualBox\nIntNet use case without hardcoding its MAC as the default.\n\nAdd packet-level regression tests for default and configured addresses,\nARP, IPv4/IPv6 output, NDP advertisements and solicitations, copied\nconfiguration, version 6 compatibility, and invalid MAC addresses.\n"
    },
    {
      "commit": "ebae88a647c89e8505f9558db7510cdee666a16f",
      "tree": "18be85604448a59817d9fba70adfbafd46a5589c",
      "parents": [
        "392af90207fc51dd9f9044ee9b1f963f3c851c2c"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 13:55:18 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 19:15:49 2026 +0100"
      },
      "message": "socket: add opt-in broadcast forwarding and configurable hostfwd listen backlog\n\nThis PR adds opt-in forwarding of guest IPv4 broadcast traffic and a\nconfigurable listen backlog for host-forwarded TCP sockets. It lets\nembedders enable broadcast-dependent discovery protocols while keeping\nthe behavior disabled by default, and it allows host-forward listeners to\nuse a backlog larger than one. This is needed for VirtualBox NAT Network\ncompatibility with guests and workloads that rely on directed or limited\nbroadcasts. Because broadcast forwarding can expose guest-originated traffic\nto the host network, the option must remain explicit and should be tested\nwith `disable_host_loopback` interactions.\n\nAdd regression tests for directed and limited broadcast translation,\ngateway access with disable_host_loopback, and configuration version 6\ndefaults.\n"
    },
    {
      "commit": "392af90207fc51dd9f9044ee9b1f963f3c851c2c",
      "tree": "5a2ba9aec5f4e1019b6b4297f38279615f804fd6",
      "parents": [
        "c224db012b7b250ab2d6df9bedd911b2df65db73"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:09:42 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:09:58 2026 +0200"
      },
      "message": "Release v4.9.6\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "c224db012b7b250ab2d6df9bedd911b2df65db73",
      "tree": "3f9b1d8dbffee9065321d8ae45fdd5b35a1bdc35",
      "parents": [
        "fa12bc718fbac9b5453297dcb89e0d78a9a96c82"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 00:47:22 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:01:15 2026 +0200"
      },
      "message": "tftp: Drop TFTP_BLOCKSIZE_MAX\n\nWe now just use the mtu.\n\nThis allows to get jumbo tftp packets.\n"
    },
    {
      "commit": "fa12bc718fbac9b5453297dcb89e0d78a9a96c82",
      "tree": "4107e0870ecef33869f6552dbfa682433f88ea54",
      "parents": [
        "8315366bc15302ea72b425db2d67dde5b7cb3db8"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 00:46:05 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:01:15 2026 +0200"
      },
      "message": "tftp: check actual available room\n\nTo avoid buffer overflows when the mtu is small.\n\nReported-by: zx (Jace) \u003cg.mygenie@gmail.com\u003e\n"
    },
    {
      "commit": "8315366bc15302ea72b425db2d67dde5b7cb3db8",
      "tree": "244697912dc36069794f80d6c80eeb610371f2c6",
      "parents": [
        "7ae00419a6258dbc3c0d4ba08e3d31530460cce5"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat Oct 24 22:48:37 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:01:15 2026 +0200"
      },
      "message": "Reject martians\n\nNotably 127.0.0.1, ::1, ::127.0.0.1 and ::ffff:127.0.0.1 would bypass\ndisable_host_loopback.\n\nReported-by: Tzipora Lusk \u003ctzipora-rose@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "7ae00419a6258dbc3c0d4ba08e3d31530460cce5",
      "tree": "97f970ec8bc5ab5d81c38f3d79fe4426706250c4",
      "parents": [
        "54dbcc5190c725ac02fea01031891b2c7eca1429"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:17:19 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 02:00:14 2026 +0200"
      },
      "message": "dns: proxy DNS queries sent to the virtual gateway address\n\nThis PR adds compatibility for guests that send DNS queries to the virtual\ngateway address instead of libslirp’s separate virtual DNS proxy\naddress. It redirects IPv4 and IPv6 gateway-address port 53 traffic to the\nhost DNS resolver path and translates replies back so the guest sees the\ngateway endpoint it configured.\n\nReturn failure when no host DNS resolver is available instead of falling\nthrough to host loopback for gateway-address DNS queries.\n\nAdd regression tests for IPv4 and IPv6 gateway DNS reply translation\nand IPv4 gateway access with DNS and host-loopback restrictions.\n"
    },
    {
      "commit": "54dbcc5190c725ac02fea01031891b2c7eca1429",
      "tree": "28e0788b53dbbd757c985fc3207ea8e2c35714fc",
      "parents": [
        "d96cd8d5e6da2c476d0e7fdf11496c01c9c2866b"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Wed Sep 23 14:48:44 2026 +0700"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 01:55:19 2026 +0200"
      },
      "message": "icmp: preserve guest TTL and forward traceroute ICMP errors\n\nThis PR fixes ICMP forwarding so guest-supplied TTLs, real reply TTLs, and\nrouter-generated ICMP errors are preserved well enough for guest traceroute\nand low-TTL ping probes. It applies the NAT hop decrement, returns Time\nExceeded when TTL expires inside libslirp, forwards ICMP Time Exceeded and\nDestination Unreachable errors, handles Linux `MSG_ERRQUEUE`, keeps Darwin\nIP headers with `IP_STRIPHDR`, and adds a Windows IP Helper fallback. This\nis needed because otherwise guests can see incorrect ping TTLs or fail to\nobserve intermediate traceroute hops through NAT. The Windows helper is\ncurrently a synchronous fallback and should be reviewed for event-loop\nblocking before upstream submission.\n\nRead the guest TTL before opening a socket and select the socket before\nbinding and poll registration. Keep Linux SOCK_DGRAM ping sockets for\nlow-TTL probes and collect reply TTLs through IP_RECVTTL. On other hosts,\nretain the datagram fallback when a raw socket cannot be opened.\n\nFix the Windows IP Helper includes and pass the missing TTL argument.\nPreserve local echo-reply TTL behavior, correct received packet lengths,\nignore replies and quoted router errors for unrelated probes, and keep\nsockets open on EAGAIN.\n\nFix the unsigned source-address mask exposed by UBSan, and add tests for\nlocal TTL expiry and unprivileged Linux ICMP forwarding with reply TTLs.\n"
    },
    {
      "commit": "d96cd8d5e6da2c476d0e7fdf11496c01c9c2866b",
      "tree": "29fa1a2393488b460bb9da7f018030d600951093",
      "parents": [
        "262c9be27bc79e16b369807b460be77e23c3d788"
      ],
      "author": {
        "name": "Andreas Löffler",
        "email": "work+freedesktop@lflr.de",
        "time": "Sun Oct 25 01:48:25 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 25 01:49:16 2026 +0200"
      },
      "message": "pingtest: use SLIRP_CONFIG_VERSION_MAX\n\nrather than hardcoding 4.\n"
    },
    {
      "commit": "262c9be27bc79e16b369807b460be77e23c3d788",
      "tree": "7cbaeaca31c3510e3692715467ecdb3b17cae650",
      "parents": [
        "5a49e5e290093e2ff83b388330501e20de0bddcf"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:40:41 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:42:44 2026 +0200"
      },
      "message": "Fix Echo Reply Length Desynchronization in `icmp_receive()` and `icmp6_receive()`\n\nFixes #105\n"
    },
    {
      "commit": "5a49e5e290093e2ff83b388330501e20de0bddcf",
      "tree": "1e3a154159e3a6858954acb35b8d149094a775a6",
      "parents": [
        "7e571d1e0f6d2750f9e0c7272512e6f0c78bf3c8"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:30:46 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:30:46 2026 +0200"
      },
      "message": "Avoid Non-Reentrant Static Variable in `tcp_emu()`\n\nIn src/tcp_subr.c, the tcp_emu() protocol emulation engine defines a local\nstate variable with static storage duration (static int ra \u003d 0;) inside case\nEMU_REALAUDIO.\n\nBetter just use a local variable.\n\nFixes #104\n"
    },
    {
      "commit": "7e571d1e0f6d2750f9e0c7272512e6f0c78bf3c8",
      "tree": "846b795e98c7d7f004f9b8cc07ab95ca3c3c1d4f",
      "parents": [
        "8bb18d3043eeb463955856c3242fef9a788d4280"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:28:56 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:28:56 2026 +0200"
      },
      "message": "Fix Socket Heap Memory \u0026 Buffer Leak in `slirp_state_load()` on Deserialization or Validation Failure\n\nFixes #103\n"
    },
    {
      "commit": "8bb18d3043eeb463955856c3242fef9a788d4280",
      "tree": "fc660fa6f0dafb05df463792836fb30e24531890",
      "parents": [
        "0bda8ef0c47d2a45980a2d480312c000e6bc9b11"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:20:35 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:20:35 2026 +0200"
      },
      "message": "Fix Double Socket Descriptor Leak in `fork_exec()` on Argument Parsing Failure\n\nFixes #102\n"
    },
    {
      "commit": "0bda8ef0c47d2a45980a2d480312c000e6bc9b11",
      "tree": "d4367ddbc08e1f5e85d15f3af0fa1e9100809bf0",
      "parents": [
        "9fd2fa698886a9c222090424d6e708709db13d8d"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:19:27 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:19:57 2026 +0200"
      },
      "message": "Fix Protocol Type Mismatch in `icmp6_receive()`: IPv4 `ICMP_UNREACH` Emitted as ICMPv6\n\nIn src/ip6_icmp.c, function icmp6_receive() mistakenly passes the\nIPv4 constant ICMP_UNREACH (3) to icmp6_send_error() instead of\nICMP6_UNREACH (1). In ICMPv6 (RFC 4443), Type 3 represents Time Exceeded\n(ICMP6_TIMXCEED). When an upstream destination address or network is\nunreachable during ping emulation, libslirp transmits a corrupted ICMPv6\nTime Exceeded packet with non-existent or conflicting codes instead of an\nICMPv6 Destination Unreachable packet.\n\nFixes #101\n"
    },
    {
      "commit": "9fd2fa698886a9c222090424d6e708709db13d8d",
      "tree": "3ff1f393f47eff975da04fb66c8d8096823dcad9",
      "parents": [
        "fe2501e799862d6fa6adb4c5e1358567ebd8c065"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Wed Oct 21 00:17:04 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 21 00:17:04 2026 +0200"
      },
      "message": "Fix Buffer Underflow in `tftp_handle_rrq()` When Handling Empty Filename\n\nAn integer underflow leading to an out-of-bounds buffer under-read\nvulnerability exists in the libslirp TFTP server implementation (src/tftp.c).\nWhen processing a TFTP Read Request (RRQ) with an empty filename (\"\"), strlen\n(req_fname) evaluates to 0. Subsequent sanity checking calculates strlen\n(req_fname) - 1, resulting in an unsigned size_t underflow to SIZE_MAX. This\ncauses an out-of-bounds pointer dereference before the start of the buffer.\n\nFixes #100\n"
    },
    {
      "commit": "fe2501e799862d6fa6adb4c5e1358567ebd8c065",
      "tree": "d0ab5d65d60d6bd48bc955ca004a059797b0902a",
      "parents": [
        "62b298621dfc413a42d2181933f5335815afa1a4"
      ],
      "author": {
        "name": "Piyusha Akash",
        "email": "gitlab@gitlab.freedesktop.org",
        "time": "Sun Oct 18 13:15:26 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Oct 18 13:15:43 2026 +0200"
      },
      "message": "Fix memory leak of tftp_server_name\n\nFixes #99\n"
    },
    {
      "commit": "62b298621dfc413a42d2181933f5335815afa1a4",
      "tree": "ed7ae586f2af41bdca49845175670491764f355b",
      "parents": [
        "390848f47391f412451b2d259d8527fabb51e5e3"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 23:06:37 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 23:06:37 2026 +0200"
      },
      "message": "note CVE numbers\n"
    },
    {
      "commit": "390848f47391f412451b2d259d8527fabb51e5e3",
      "tree": "0509386ab50c032b58f5af4576f8ee5f79157c51",
      "parents": [
        "6c34054b2c8b18cc6ff7fc940bd4f947c0757405"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 07:46:45 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 07:46:45 2026 +0200"
      },
      "message": "Release v4.9.5\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "6c34054b2c8b18cc6ff7fc940bd4f947c0757405",
      "tree": "728e19c938ade32c197522650e55a477bee304ab",
      "parents": [
        "5815f119c334c26e6e7a14ac87eca12b69918627"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 07:43:03 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Sep 22 07:44:10 2026 +0200"
      },
      "message": "Set UDP sockets in blocking mode\n\nTo avoid sosendto() blocking if the write queue gets full.\nWe\u0027ll then just drop the datagrams.\n\nFixes #97\n"
    },
    {
      "commit": "5815f119c334c26e6e7a14ac87eca12b69918627",
      "tree": "fd038ae9c346aa317e8f5dd6857fd9752884f637",
      "parents": [
        "97f2dd0afea0db8b31135f768ecafe0775722a25"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Sep 17 00:39:16 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Sep 17 00:39:16 2026 +0200"
      },
      "message": "dhcpv6: fix bounding the reply against the interface MTU\n\nIf client_id fills exactly up to MTU and the mbuf is allocated exactly\nfor MTU, we would be writing the option code before checking that it\ndoes not overflow.\n"
    },
    {
      "commit": "97f2dd0afea0db8b31135f768ecafe0775722a25",
      "tree": "7ba04c926c4d0f9480c1d50f1aa36584518149f2",
      "parents": [
        "b4b2b07812fcadd2754281e5ae8d9fe2bfb3c96a"
      ],
      "author": {
        "name": "Stuart Thomas",
        "email": "stuart.thomas@triageforge.co.uk",
        "time": "Thu Sep 17 00:36:27 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Sep 17 00:36:27 2026 +0200"
      },
      "message": "dhcpv6: bound the reply against the interface MTU\n\ndhcpv6_info_request() builds the DHCPv6 REPLY into an mbuf from m_get(), whose\ndata area is sized to the interface MTU. Two writes into that mbuf are not\nbounded against it, so a guest INFO_REQUEST can overflow the reply when the host\ninterface MTU is small (SlirpConfig.if_mtu; IF_MTU_MIN is 68). The default MTU\n(1500) is not affected.\n\n1) CLIENTID echo (dhcpv6.c:164): memcpy(resp, ri.client_id, ri.client_id_len),\n   client_id_len guest-controlled up to 256. Overflow iff client_id_len \u003e if_mtu-8\n   (attacker-controlled content).\n\n2) Boot-URL option (dhcpv6.c:181-182): smaxlen is a signed int computed as\n   m_data + if_mtu - (resp+2). Once the CLIENTID and/or DNS options have advanced\n   resp past the MTU window, smaxlen is negative; it is passed to slirp_fmt() whose\n   size parameter is size_t, so the negative value becomes huge and slirp_fmt no\n   longer truncates -\u003e the formatted URL is written unbounded past the mbuf. Reached\n   with an ORO requesting OPTION_DNS_SERVERS + OPTION_BOOTFILE_URL (host-controlled\n   content, but a guest-triggerable OOB write).\n\nReject/skip when the reply would not fit the interface-MTU-sized mbuf.\n"
    },
    {
      "commit": "b4b2b07812fcadd2754281e5ae8d9fe2bfb3c96a",
      "tree": "1c537bf5b65b64abc206c633a58c5ccf1f899d8d",
      "parents": [
        "d09dc9a70360ee7838acccbd234ab83f3b9b37a5"
      ],
      "author": {
        "name": "Stuart Thomas",
        "email": "stuart.thomas@triageforge.co.uk",
        "time": "Thu Sep 17 00:34:08 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Sep 17 00:34:08 2026 +0200"
      },
      "message": "ncsi: bounds-check OEM command bodies before dereferencing them\n\nncsi_input() validates pkt_len only against the NC-SI common header\n(sizeof(struct ncsi_pkt_hdr) \u003d 16) -- the check added for CVE-2020-29129.\nThe OEM command dispatch, added afterwards, reads further into the frame\nwith no additional length check:\n\n  * ncsi_rsp_handler_oem() reads cmd-\u003emfr_id at NC-SI payload offset 16\n    (frame offset ETH_HLEN + 16 \u003d 30) and reflects it into the response\n    (rsp-\u003emfr_id \u003d cmd-\u003emfr_id) before the mfr_id match test -- so a guest\n    OEM frame of 30..33 bytes causes an out-of-bounds read whose bytes are\n    sent back to the guest (info leak). Unconditional.\n\n  * when the host is configured as Mellanox (mfr_id \u003d\u003d 0x8119),\n    ncsi_rsp_handler_oem_mlx() then reads cmd_rev/cmd/param/optional from\n    cmd-\u003edata (payload offset 20, frame offset 34) -- a guest frame of\n    34..37 bytes reads out of bounds there too.\n\nBoth are guest-triggerable out-of-bounds reads of the raw RX buffer and a\nresidual of CVE-2020-29129 (which covered only the common header). They\nwere found by fuzzing the NC-SI path (which upstream does not fuzz) with a\nguard-page allocator: 30/31/32-byte frames fault at ncsi.c:136, a 37-byte\nframe faults at ncsi.c:107.\n\nReject OEM frames too short to contain the fields the handlers read.\n\n  sizeof(struct ncsi_cmd_oem_pkt)      \u003d\u003d 20  -\u003e generic OEM min 34 bytes\n  + sizeof(struct ncsi_rsp_oem_mlx_pkt) \u003d\u003d 4  -\u003e Mellanox     min 38 bytes\n"
    },
    {
      "commit": "d09dc9a70360ee7838acccbd234ab83f3b9b37a5",
      "tree": "945e977d51e44bf34d149edeb2628bca02ce5b8e",
      "parents": [
        "5661343e2c1f5093201c009e3f5380a1119ceccc"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Aug 25 01:13:44 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Aug 25 01:13:44 2026 +0200"
      },
      "message": "Release v4.9.4\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "5661343e2c1f5093201c009e3f5380a1119ceccc",
      "tree": "4427ae87a188dab89249ac450ecb5cf129f33adf",
      "parents": [
        "de252cbfa1299724b1ac3337ac99d9465e7ea49f"
      ],
      "author": {
        "name": "Artem Dinaburg",
        "email": "artem@trailofbits.com",
        "time": "Tue Aug 25 00:52:48 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Aug 25 01:06:59 2026 +0200"
      },
      "message": "ip_input: update hlen on ip_reass\n\nIf different fragments have different header lengths, the packet returned\nby ip_reass may have a different header length than the fragment we just\ngot. tcp/udp/icmp_input need to be given this length since we given them the\nreassembled packet, otherwise they can leak neighbouring information.\n"
    },
    {
      "commit": "de252cbfa1299724b1ac3337ac99d9465e7ea49f",
      "tree": "1a0bf708fbc809616c310039d04ae1ab73631cc9",
      "parents": [
        "0dc4c9885d4926d7a253d3ee2f9c8d20327f4a8c"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Aug 25 01:02:16 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Aug 25 01:04:19 2026 +0200"
      },
      "message": "ip6_input: Trim mbuf to ip6-announced length\n\nlike ip_input does.\n\nFixes: #96\n"
    },
    {
      "commit": "0dc4c9885d4926d7a253d3ee2f9c8d20327f4a8c",
      "tree": "6159822898819d238b55dfff2346f47c22f4fd96",
      "parents": [
        "7c63245957d0646d963c56204d1885eda8df85a0"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat Aug 15 00:32:41 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat Aug 15 00:36:08 2026 +0200"
      },
      "message": "Fix reporting oob output\n\nWe were not including the noob count when writing more non-oob data.\n\nThe caller only checks for the value being \u003e 0 so the last return is not\na problem. The only case that matters is the EAGAIN/EINTR case, which\nshould be very seldom and we will retry in that case anyway.\n\nSuggested-by: @jasonmli8\n\nFixes #95\n"
    },
    {
      "commit": "7c63245957d0646d963c56204d1885eda8df85a0",
      "tree": "ae192c78281e6524be838f73b8886a083cfbd7de",
      "parents": [
        "d82ac5a853813d70cb990bc31d6faeffe8e4dc51"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jul 08 00:25:01 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jul 08 00:25:01 2026 +0200"
      },
      "message": "Note about the security contact\n"
    },
    {
      "commit": "d82ac5a853813d70cb990bc31d6faeffe8e4dc51",
      "tree": "6e4dcdc5ff85bd3597c271f4239f850e82f4e2e4",
      "parents": [
        "3e6e68e779c9051590250a87214dabf91e70949a"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jun 24 02:54:34 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jun 24 02:54:42 2026 +0200"
      },
      "message": "Add CVE information\n"
    },
    {
      "commit": "3e6e68e779c9051590250a87214dabf91e70949a",
      "tree": "c58f6324a0cffdec1cb03f084c5345946c31269f",
      "parents": [
        "728c13e19ca19fd488f68007b78043f632d107c9",
        "e2659110d7f956bfe5b3521c48d8858901293a5b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jun 10 20:16:59 2026 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jun 10 20:16:59 2026 +0000"
      },
      "message": "Merge branch \u0027permit-guestfwd-to-vhost-vnameserver\u0027 into \u0027master\u0027\n\nslirp: permit guestfwd to vhost_addr/vnameserver_addr\n\nCloses #81\n\nSee merge request slirp/libslirp!158"
    },
    {
      "commit": "e2659110d7f956bfe5b3521c48d8858901293a5b",
      "tree": "c58f6324a0cffdec1cb03f084c5345946c31269f",
      "parents": [
        "728c13e19ca19fd488f68007b78043f632d107c9"
      ],
      "author": {
        "name": "Kirill A. Korinsky",
        "email": "kirill@korins.ky",
        "time": "Wed Jun 10 02:21:53 2026 +0200"
      },
      "committer": {
        "name": "Kirill A. Korinsky",
        "email": "kirill@korins.ky",
        "time": "Wed Jun 10 02:21:53 2026 +0200"
      },
      "message": "slirp: permit guestfwd to vhost_addr/vnameserver_addr\n\nNo reason not to, and sometimes it is convenient when dealing with\nless-than-configurable guests.\n\nKeep the existing DNS redirection protected by rejecting guestfwd on the\nvirtual nameserver address port 53 while DNS support is enabled.\n\nDHCP/BOOTP and TFTP are not blocked here because guestfwd only handles\nTCP connections. The libslirp DHCP/BOOTP/TFTP services are UDP-only, so\nthey do not conflict with guestfwd.\n\nFixes #81 and suppressed #140.\n\nCo-authored-by: Ivan Shapovalov \u003cintelfx@intelfx.name\u003e\n"
    },
    {
      "commit": "728c13e19ca19fd488f68007b78043f632d107c9",
      "tree": "b414289f323cab78712d8898f748033efd7e6ed6",
      "parents": [
        "dd76415fce457e319d665eb8210d05c5731360ba"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 18:01:23 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 18:13:18 2026 +0200"
      },
      "message": "Test qemu migration support\n\nRefs #94\n"
    },
    {
      "commit": "dd76415fce457e319d665eb8210d05c5731360ba",
      "tree": "f942345e9d965f83702d8ef912b2e43e31cbd9a1",
      "parents": [
        "899c3b7b1f3a2e9009320423da265fdb43b49fdf"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 17:48:50 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 17:50:09 2026 +0200"
      },
      "message": "Release v4.9.3\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "899c3b7b1f3a2e9009320423da265fdb43b49fdf",
      "tree": "37b94342ffc354cbda0f9be159a5961819dde734",
      "parents": [
        "e31949f4e51f7eef75de2bc2cd53662e6398bafd",
        "cb2755b3134650f380c3fbb697f507a6b53bad26"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 15:47:25 2026 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue May 26 15:47:25 2026 +0000"
      },
      "message": "Merge branch \u0027fix-vmstate-break\u0027 into \u0027master\u0027\n\nslirp: Fix migration break on incorrect vmstate retcode\n\nCloses #94\n\nSee merge request slirp/libslirp!157"
    },
    {
      "commit": "cb2755b3134650f380c3fbb697f507a6b53bad26",
      "tree": "37b94342ffc354cbda0f9be159a5961819dde734",
      "parents": [
        "e31949f4e51f7eef75de2bc2cd53662e6398bafd"
      ],
      "author": {
        "name": "Peter Xu",
        "email": "peterx@redhat.com",
        "time": "Tue May 26 11:31:14 2026 -0400"
      },
      "committer": {
        "name": "Peter Xu",
        "email": "peterx@redhat.com",
        "time": "Tue May 26 11:41:58 2026 -0400"
      },
      "message": "slirp: Fix migration break on incorrect vmstate retcode\n\nCommit 6155c34 while cleaning up the code provided an inverted retval for\nthe vmstate get()/put() handlers.  Fix it.\n\nQuite a few QEMU CI tests are affected by this problem.  One reproducer:\n\n  (under qemu build dir)\n  $ QTEST_QEMU_BINARY\u003d./qemu-system-x86_64 ./tests/qtest/migration-test\n\nCloses #94.\n\nFixes: 6155c34 (\"vmstate: pass on read/write errors for state\")\nSigned-off-by: Peter Xu \u003cpeterx@redhat.com\u003e\n"
    },
    {
      "commit": "e31949f4e51f7eef75de2bc2cd53662e6398bafd",
      "tree": "4ebdab8974e68093cc03de7a1dad3a484e699e8c",
      "parents": [
        "97b325339a1377249e68e6c58e9c15a6e1bba4c1"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 25 11:31:52 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 25 11:32:00 2026 +0200"
      },
      "message": "Add missing diff url\n"
    },
    {
      "commit": "97b325339a1377249e68e6c58e9c15a6e1bba4c1",
      "tree": "64d966bc688f804c164826b37759f603589571cb",
      "parents": [
        "119b897309074569c544ca43f7feb29e81fe73bb"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:13:51 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:22:37 2026 +0200"
      },
      "message": "Release v4.9.2\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "119b897309074569c544ca43f7feb29e81fe73bb",
      "tree": "9a9c6964844cd6fe3ff1a3770e3a1044101a4432",
      "parents": [
        "927bca7344e31fd58e2f7afaca784aad4400eb84"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:18:22 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:22:14 2026 +0200"
      },
      "message": "tcp_sockclosed: Set linger timer on remaining closing states\n"
    },
    {
      "commit": "927bca7344e31fd58e2f7afaca784aad4400eb84",
      "tree": "be21be655b7312bffd33f8b9e31879cf008f8979",
      "parents": [
        "4ddbcd5cc4f7a14473ebfc1dcdd1afb4edf96908"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:06:59 2026 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sat May 23 22:22:14 2026 +0200"
      },
      "message": "oob: cap urgent data count to what is actually available\n\nso_urgc is provided by the guest sender, so can arbitrary and beyond\nwhat we actually have. Worse, this can lead to an sb_cc integer\nunderflow leading to leaking gigabytes of data.\n\nFixes #93\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "4ddbcd5cc4f7a14473ebfc1dcdd1afb4edf96908",
      "tree": "37fd128fa5000bdc7d8cef1719d2c2f87b377f43",
      "parents": [
        "061d82ff161e69f2ce727ee0fa2accabeaaad2f7",
        "bbb9e0176540a3bd23fd013702ea08598e45b172"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jan 28 12:10:31 2026 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Jan 28 12:10:31 2026 +0000"
      },
      "message": "Merge branch \u0027uefi-https\u0027 into \u0027master\u0027\n\nbootp: allow https for UEFI HTTP boot\n\nSee merge request slirp/libslirp!156"
    },
    {
      "commit": "bbb9e0176540a3bd23fd013702ea08598e45b172",
      "tree": "37fd128fa5000bdc7d8cef1719d2c2f87b377f43",
      "parents": [
        "061d82ff161e69f2ce727ee0fa2accabeaaad2f7"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Wed Jan 28 12:29:50 2026 +0100"
      },
      "committer": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Wed Jan 28 12:29:50 2026 +0100"
      },
      "message": "bootp: allow https for UEFI HTTP boot\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\n"
    },
    {
      "commit": "061d82ff161e69f2ce727ee0fa2accabeaaad2f7",
      "tree": "ee40406e2b1a888ab02243e46ed6dfe8f04aa9ae",
      "parents": [
        "83ed48b87bab16f0eb35d08b351ecb8a3f13f0b6"
      ],
      "author": {
        "name": "Gary Beihl",
        "email": "garybeihl@microsoft.com",
        "time": "Mon Jan 05 19:18:40 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Jan 05 19:19:08 2026 +0100"
      },
      "message": "ncsi: Document the Get Version ID (GVI) packet handler\n\nSigned-off-by: Gary Beihl \u003cgarybeihl@microsoft.com\u003e\n"
    },
    {
      "commit": "83ed48b87bab16f0eb35d08b351ecb8a3f13f0b6",
      "tree": "6088bf3b4aefc4abf7c44b2675323e75317f5ea3",
      "parents": [
        "281eb77348aa13a8e8c15df7fdaf31b080e67376"
      ],
      "author": {
        "name": "Gary Beihl",
        "email": "garybeihl@microsoft.com",
        "time": "Mon Jan 05 19:15:13 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Jan 05 19:19:05 2026 +0100"
      },
      "message": "ncsi: Document why we fix memory alignment by adding 2-byte padding\n\nbefore the Ethernet header. This ensures the IP payload starts on a 4-byte\nboundary, which reduces packet processing errors by ~50% and resolves the\n\"NCSI: Handler for packet type 0x82 returned -19\" errors seen during channel\ninitialization on some architectures.\n\nSigned-off-by: Gary Beihl \u003cgarybeihl@microsoft.com\u003e\n"
    },
    {
      "commit": "281eb77348aa13a8e8c15df7fdaf31b080e67376",
      "tree": "3e92cf3ac57135d05fd7bef7a21a35b6b6ab1022",
      "parents": [
        "027a9abeba1ee97cff27c9002e71af0d4fc13607"
      ],
      "author": {
        "name": "Gary Beihl",
        "email": "garybeihl@microsoft.com",
        "time": "Mon Jan 05 19:14:11 2026 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Jan 05 19:19:01 2026 +0100"
      },
      "message": "ncsi: add documentation comments to the packet handler table for improved readability\n\nSigned-off-by: Gary Beihl \u003cgarybeihl@microsoft.com\u003e\n"
    },
    {
      "commit": "027a9abeba1ee97cff27c9002e71af0d4fc13607",
      "tree": "f714e602b17c557ab711edf2ce1726cd24b10352",
      "parents": [
        "1606c09a2feb5f19e5adaa4bb6694788e7a982b4"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 06 01:45:41 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 06 01:45:41 2025 +0100"
      },
      "message": "Fix byte order\n\nwhich fixes port conflict\n\nReported-by: Steven Haber\n\nFixes #92\n"
    },
    {
      "commit": "1606c09a2feb5f19e5adaa4bb6694788e7a982b4",
      "tree": "1f64d2d3b6a0748cb81045171c60f7a2f4942dd9",
      "parents": [
        "6155c349156b3fd52434880dc73cedfd4e8395a9"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 29 09:52:59 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Oct 29 09:52:59 2025 +0100"
      },
      "message": "SO_ERROR: take the errno as error hint\n"
    },
    {
      "commit": "6155c349156b3fd52434880dc73cedfd4e8395a9",
      "tree": "7b026a4b5d9236838a154200d0bec2220f2328d8",
      "parents": [
        "f066d91dbbb06d75cd36a7a332038fd96f7e928d"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 28 18:00:47 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 28 18:00:47 2025 +0100"
      },
      "message": "vmstate: pass on read/write errors for state\n"
    },
    {
      "commit": "f066d91dbbb06d75cd36a7a332038fd96f7e928d",
      "tree": "77c83a1633cb4fe0861e7a70881c5326ef3235f1",
      "parents": [
        "d6cfac6d060d57c0e38a9c61157eaf6962b6c257"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 28 17:50:09 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Oct 28 17:50:09 2025 +0100"
      },
      "message": "cope with SO_ERROR possibly failing\n"
    },
    {
      "commit": "d6cfac6d060d57c0e38a9c61157eaf6962b6c257",
      "tree": "d1ebab5a8c2cb6ce24616583f216f8481d131351",
      "parents": [
        "19b8f2645cf71fc58781fcf4f04046a546138872"
      ],
      "author": {
        "name": "Alex Bennée",
        "email": "alex.bennee@linaro.org",
        "time": "Mon Sep 08 13:33:48 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Sep 08 19:32:32 2025 +0200"
      },
      "message": "Move the modified 3-Clause BSD text into LICENSE\n\nThis is to help the automated license detectors find the text without\ngetting confused by the surrounding verbiage. However the text has\nis lightly modified from the reference 3-clause text I checked on:\n\n  https://opensource.org/license/bsd-3-clause\n\nAs it adds:\n\n  \"All rights reserved\" on the copyright line\n  Mentions DANNY GASPAROVSKI in place of COPYRIGHT HOLDERS\n  Uses `` and \u0027\u0027 to wrap \"AS IS\"\n\nWhich results in the golang license detector only having 96%\nconfidence this is a BSD-3-Clause. Before this patch it was 89%\nconfident. However these seems enough to convince GitLab to properly\ncategorise the license of the project.\n\nSigned-off-by: Alex Bennée \u003calex.bennee@linaro.org\u003e\n"
    },
    {
      "commit": "19b8f2645cf71fc58781fcf4f04046a546138872",
      "tree": "73e6cb3b7959a37dd7b76e0cdef0dfcd3817bc6e",
      "parents": [
        "5e171598422f816555bee331f18a6adbe1291b1a",
        "baa4160b26431448b503d8d897db24fa0eb1386b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Jul 06 21:27:56 2025 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Jul 06 21:27:56 2025 +0000"
      },
      "message": "Merge branch \u0027honor-dns-port\u0027 into \u0027master\u0027\n\nfix: honor dns server port number on macos\n\nSee merge request slirp/libslirp!153"
    },
    {
      "commit": "baa4160b26431448b503d8d897db24fa0eb1386b",
      "tree": "2f0f2ba7ba8a734dcbf2546c4c8f7a5ac855f865",
      "parents": [
        "735904142f95d0500c0eae6bf763e4ad24b6b9fd"
      ],
      "author": {
        "name": "Ihar Hrachyshka",
        "email": "ihar.hrachyshka@gmail.com",
        "time": "Thu Jun 12 13:35:04 2025 -0400"
      },
      "committer": {
        "name": "Ihar Hrachyshka",
        "email": "ihar.hrachyshka@gmail.com",
        "time": "Sat Jul 05 13:13:48 2025 -0400"
      },
      "message": "fix: honor dns server port number on macos\n\nSigned-off-by: Ihar Hrachyshka \u003cihar.hrachyshka@gmail.com\u003e\n"
    },
    {
      "commit": "5e171598422f816555bee331f18a6adbe1291b1a",
      "tree": "09b4772ada1a5c5e8215941fa9b3f3705d6ca83d",
      "parents": [
        "9c744e1e52aa0d9646ed91d789d588696292c21e"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Jun 06 13:14:15 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri Jun 06 13:14:15 2025 +0200"
      },
      "message": "Mention how to get debugging prints\n"
    },
    {
      "commit": "9c744e1e52aa0d9646ed91d789d588696292c21e",
      "tree": "081af03cd2388a88d2cc84ab982a2e5f088c1717",
      "parents": [
        "b9321c6ece41940466c24fbea7a0cf3b7cf04aba"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed May 28 00:38:05 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed May 28 00:38:05 2025 +0200"
      },
      "message": "Release v4.9.1\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "b9321c6ece41940466c24fbea7a0cf3b7cf04aba",
      "tree": "bf7e15c85ad74aed4d079c19be75879200ec0def",
      "parents": [
        "b04455b4d4680e41e1004dd7c147de156e00ec95"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Apr 24 00:27:25 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 26 11:11:11 2025 +0200"
      },
      "message": "tcp: Fix starting the linger2 timer on socket shutdown\n\nIf the socket is completely shut down just before we get our FIN ack-ed, the\nsocket state has SS_NOFDREF instead of SS_FCANTRCVMORE.\n\nIf the socket sees write() shut down (and we thus switch to FIN_WAIT_1), and\nwe get our FIN acked before seeing read() shut down, when we eventually see\nthat we need to start the linger2 timer.\n\nThis way, it\u0027s only if we still have a live Internet socket that we stay in\nthe TCPS_FIN_WAIT_2 state without a timer, and we let the host decide the\nlinger2 timer.\n\nFixes #86\n\n(hopefully)\n"
    },
    {
      "commit": "b04455b4d4680e41e1004dd7c147de156e00ec95",
      "tree": "35159cd4b37a68298c587c0125a88e0031e7b4c8",
      "parents": [
        "1fb1c4c89132f6bfc61b01228e786d852b9f276e"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Apr 23 23:56:47 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 26 11:06:41 2025 +0200"
      },
      "message": "tcp: Reduce linger time to two minutes\n\nBSD \u0026 Linux do this to avoid non-cooperative peers, as TCP protocols usually\ndon\u0027t stay idle for long after one peer shuts down its side. We could\notherwise be waiting for FIN from the guest indefinitely without keepalive.\n\nSuggested-by: Fabian Merki\n"
    },
    {
      "commit": "1fb1c4c89132f6bfc61b01228e786d852b9f276e",
      "tree": "f308172257b353bb2cfdc99fa8f19cb290f91612",
      "parents": [
        "b70d1a0c863413d60a4b2a76a051928869773069"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Apr 24 00:05:48 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 26 11:06:41 2025 +0200"
      },
      "message": "tcp: on input during init, reset TCPT_KEEP to TCPTV_KEEP_INIT\n\nrather than TCPTV_KEEP_IDLE: until it\u0027s established, we should be more\ndemanding.\n"
    },
    {
      "commit": "b70d1a0c863413d60a4b2a76a051928869773069",
      "tree": "a4a37f5b2734f5f7ccff595ce7b8a012957b5320",
      "parents": [
        "110d4f18a2f57358040e170fa7af5487cb2800dc"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Apr 23 23:47:34 2025 +0200"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon May 26 11:06:41 2025 +0200"
      },
      "message": "tcp: on input, reset TCPT_KEEP to TCPTV_KEEP_IDLE rather than TCPTV_KEEPINTVL\n\nWhen receiving input, we should wait for 2h before trying to probe\nagain for keepalive. We do not need to wake again until that.\n"
    },
    {
      "commit": "110d4f18a2f57358040e170fa7af5487cb2800dc",
      "tree": "5830d50c4fe47c95f0a90105aa418cd8b7656b93",
      "parents": [
        "735904142f95d0500c0eae6bf763e4ad24b6b9fd",
        "566f4f9b8e896b4ef62e1db583556d7929bc204b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri May 23 06:59:03 2025 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Fri May 23 06:59:03 2025 +0000"
      },
      "message": "Merge branch \u0027master\u0027 into \u0027master\u0027\n\nModified util.c to handle WSA function return values closer to specification....\n\nSee merge request slirp/libslirp!152"
    },
    {
      "commit": "566f4f9b8e896b4ef62e1db583556d7929bc204b",
      "tree": "5830d50c4fe47c95f0a90105aa418cd8b7656b93",
      "parents": [
        "735904142f95d0500c0eae6bf763e4ad24b6b9fd"
      ],
      "author": {
        "name": "Jack Doherty",
        "email": "jack.doherty@oracle.com",
        "time": "Thu May 22 22:21:40 2025 -0700"
      },
      "committer": {
        "name": "Jack Doherty",
        "email": "jack.doherty@oracle.com",
        "time": "Thu May 22 22:21:40 2025 -0700"
      },
      "message": "Modified util.c to handle WSA function return values closer to specification. Explicit checks for INVALID_SOCKET and SOCKET_ERROR are made.\n"
    },
    {
      "commit": "735904142f95d0500c0eae6bf763e4ad24b6b9fd",
      "tree": "6bc7f72d4092052800da6a91658f04feac60223e",
      "parents": [
        "a83fa4c7582e537980f0bed750890d9618230967"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Mar 26 08:42:35 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Mar 26 08:45:44 2025 +0100"
      },
      "message": "apple: Fix getting IPv4 DNS server address when IPv4 and IPv4 are interleaved\n\nWhen getting an IPv4 DNS server address, if libresolv returns\n\nIPv4\nIPv6\nIPv4\nIPv6\n\n(or just IPv4 and IPv6)\n\nwe would still have found \u003d\u003d 1 on the second iteration and thus take the\nIPv6 even if it\u0027s not the proper af. We can as well just completely ignore\nthe non-matching af entries.\n\nFixes #85\n"
    },
    {
      "commit": "a83fa4c7582e537980f0bed750890d9618230967",
      "tree": "94328052d0b0c233af24e9b408946f5b330487f4",
      "parents": [
        "3aba012907471f886077a1a288f803bcd5a6e895",
        "2a4a61443e6b1fb0bb9c96c5dbe474699f9b3430"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 16 09:43:50 2025 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 16 09:43:50 2025 +0000"
      },
      "message": "Merge branch \u0027master\u0027 into \u0027master\u0027\n\nDo not link tests with libslirp.map\n\nCloses #84\n\nSee merge request slirp/libslirp!151"
    },
    {
      "commit": "2a4a61443e6b1fb0bb9c96c5dbe474699f9b3430",
      "tree": "a98fae086f2a7892833d982e135309552713b21e",
      "parents": [
        "c32a8a1ccaae8490142e67e078336a95c5ffc956"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 16 10:17:33 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 16 10:17:33 2025 +0100"
      },
      "message": "Do not link tests with libslirp.map\n\nFixes #84\n"
    },
    {
      "commit": "3aba012907471f886077a1a288f803bcd5a6e895",
      "tree": "bd3b6bc29556a815037977c2f36d50f909352196",
      "parents": [
        "5ac3e5d7d9174f1411fc9c3001a08ac95af9808c",
        "fcedbc15fd37d5f65ca15eaf71f064ec7511d76d"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Feb 03 00:24:40 2025 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Feb 03 00:24:40 2025 +0000"
      },
      "message": "Merge branch \u0027override\u0027 into \u0027master\u0027\n\nmeson: add dependency override for libslirp\n\nSee merge request slirp/libslirp!150"
    },
    {
      "commit": "fcedbc15fd37d5f65ca15eaf71f064ec7511d76d",
      "tree": "bd3b6bc29556a815037977c2f36d50f909352196",
      "parents": [
        "5ac3e5d7d9174f1411fc9c3001a08ac95af9808c"
      ],
      "author": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 15:50:11 2025 -0800"
      },
      "committer": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 16:02:31 2025 -0800"
      },
      "message": "meson: add dependency override for libslirp\n\nIf libslirp is built as a Meson subproject, Meson needs to associate the\nsuperproject\u0027s dependency(\u0027slirp\u0027) call with our libslirp_libdep variable.\nThe slirp.wrap file shipped in Meson wrapdb accomplishes this with:\n\n    [provide]\n    slirp \u003d libslirp_libdep\n\nBut that requires wrapdb to know the name of our libslirp_libdep variable,\nwhich changed in 04612eb31674.\n\nExplicitly bind the pkg-config name \u0027slirp\u0027 to libslirp_libdep.  This will\nallow slirp.wrap to say:\n\n    [provide]\n    dependency_names \u003d slirp\n\nand avoid hardcoding the variable name.\n\n"
    },
    {
      "commit": "5ac3e5d7d9174f1411fc9c3001a08ac95af9808c",
      "tree": "35fe369a50b2a7250519f01f4cc7fd3a9b75e325",
      "parents": [
        "c32a8a1ccaae8490142e67e078336a95c5ffc956",
        "8d86fd7114f613955d1d8d082ae3add5618c6fc9"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 02 23:53:57 2025 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Sun Feb 02 23:53:57 2025 +0000"
      },
      "message": "Merge branch \u0027meson\u0027 into \u0027master\u0027\n\nFix Meson warnings\n\nSee merge request slirp/libslirp!149"
    },
    {
      "commit": "8d86fd7114f613955d1d8d082ae3add5618c6fc9",
      "tree": "35fe369a50b2a7250519f01f4cc7fd3a9b75e325",
      "parents": [
        "0202f3c7fb1b0e40f374adc5f8bf7de84f098cab"
      ],
      "author": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 15:26:55 2025 -0800"
      },
      "committer": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 15:26:55 2025 -0800"
      },
      "message": "meson: specify that C++ is only used for host binaries\n\nFix Meson warning:\n\n    meson.build:32: WARNING: add_languages is missing native:, assuming languages are wanted for both host and build.\n\n"
    },
    {
      "commit": "0202f3c7fb1b0e40f374adc5f8bf7de84f098cab",
      "tree": "19a4b84456ae66ecd7d876ac3922490c44e7ff98",
      "parents": [
        "c32a8a1ccaae8490142e67e078336a95c5ffc956"
      ],
      "author": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 15:24:14 2025 -0800"
      },
      "committer": {
        "name": "Benjamin Gilbert",
        "email": "bgilbert@backtick.net",
        "time": "Sun Feb 02 15:24:14 2025 -0800"
      },
      "message": "meson: use boolean defaults for boolean options\n\nFix Meson warning:\n\n    NOTICE: Future-deprecated features used:\n     * 1.1.0: {\u0027\"boolean option\" keyword argument \"value\" of type str\u0027}\n\n"
    },
    {
      "commit": "c32a8a1ccaae8490142e67e078336a95c5ffc956",
      "tree": "99871c9acbc4587b32df815307f2c3329341d03a",
      "parents": [
        "04612eb31674698450b40b5d841e544acd9de4bb"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:44:12 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:46:23 2025 +0100"
      },
      "message": "Release v4.9.0\n\nSigned-off-by: Samuel Thibault \u003csamuel.thibault@ens-lyon.org\u003e\n"
    },
    {
      "commit": "04612eb31674698450b40b5d841e544acd9de4bb",
      "tree": "a9ad2bd0450d17970135686f4fe22ecc7cc2a975",
      "parents": [
        "aad57fd45736f818d08f793f37a4cb67717c9122"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Thu Jan 30 02:13:11 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:31:26 2025 +0100"
      },
      "message": "Windows target build fixes\n\nMeson (meson.build):\n\n- Add \"target_winver\" (default: \"\") option to support Windows versions\n  earlier Windows 7 (0x0601, the same as glib.) This sets a compiler\n  command-line define \"-DTARGET_WINVER\u003d${target_winver}\", which\n  unconditionally sets WINVER and _WIN32_WINNT to select the requested\n  target Windows API.\n\n  Ref: https://learn.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt\n\n- Clean up building the static library.\n\n  - Build the static library when \"-Dstatic\u003dtrue\" is present on the\n    command line, not just when doing fuzz testing.\n\n  - Add the \"*_STATIC_COMPILATION\" defines to the compiler\u0027s command\n    line. For Windows, ensure that libiconv is an explicit dependency\n    since \"pkg-config --libs --static\" fails to add it as a dependency\n    library.\n"
    },
    {
      "commit": "aad57fd45736f818d08f793f37a4cb67717c9122",
      "tree": "8934d0636a2a0e4f1e5c6b9829a4911494f3fbee",
      "parents": [
        "073dec073fa2efc471a61644b08c4396c0bef330"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:31:15 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:31:26 2025 +0100"
      },
      "message": "Fix assertion\n"
    },
    {
      "commit": "073dec073fa2efc471a61644b08c4396c0bef330",
      "tree": "241393b5ac7c409f3035683ad03fa701a36e2296",
      "parents": [
        "f032627c2569ca4e4b617906fb4d24e41eb86b54"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Thu Jan 30 02:05:09 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:09:48 2025 +0100"
      },
      "message": "Provide stubs for inet_ntop() and inet_pton()\n\nfor Windows versions earlier than Windows 7.\n"
    },
    {
      "commit": "f032627c2569ca4e4b617906fb4d24e41eb86b54",
      "tree": "ae5f66c01f4da161e52fe25174e3faf712217ab3",
      "parents": [
        "58e749454d1fb0ab3eb3864e5d71fca552e4ed2b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:04:01 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:04:01 2025 +0100"
      },
      "message": "winver.h: Introduce header that forces defining WINVER and _WIN32_WINNT\n"
    },
    {
      "commit": "58e749454d1fb0ab3eb3864e5d71fca552e4ed2b",
      "tree": "7d9db7c74c029959c3ebc336a068277281c01196",
      "parents": [
        "f1533e1b6b27def2dfed955dcd678276e32887b0"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Thu Jan 30 02:00:10 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 02:00:10 2025 +0100"
      },
      "message": "ensure that WINVER and _WIN32_WINNT are unconditionally set\n\nif TARGET_WINVER is defined.\n"
    },
    {
      "commit": "f1533e1b6b27def2dfed955dcd678276e32887b0",
      "tree": "845495b9b11842f2959fcb39a0a77824fc711d86",
      "parents": [
        "799a78cb9f034c482c7b61182a078810f2255121"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Thu Jan 30 01:36:19 2025 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Jan 30 01:56:13 2025 +0100"
      },
      "message": "sbuf.c: Cleanups\n\n- sbcopy(): Make the code a little clearer to follow, with comments.\n- Type consistency\n    - Eliminate type slices (size_t -\u003e int)\n    - Use ssize_t when doing pointer arithmetic.\n    - Eliminate signed/unsigned comparisons.\n    - Add range checking assertions.\n"
    },
    {
      "commit": "799a78cb9f034c482c7b61182a078810f2255121",
      "tree": "eb369caf9535499b35bf24cbb9081d31bc0a5652",
      "parents": [
        "14739f508a82b66b76c82917c84777ac1672dba4",
        "e3e56c577faf5317c43404b8e23ac1e4ee6109b8"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Nov 27 00:07:32 2024 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Wed Nov 27 00:07:32 2024 +0000"
      },
      "message": "Merge branch \u0027tcp_emu\u0027 into \u0027master\u0027\n\nfix for slirp ftp proxying putting slirp placeholder host ip in PORT commands\n\nCloses #82\n\nSee merge request slirp/libslirp!147"
    },
    {
      "commit": "e3e56c577faf5317c43404b8e23ac1e4ee6109b8",
      "tree": "eb369caf9535499b35bf24cbb9081d31bc0a5652",
      "parents": [
        "14739f508a82b66b76c82917c84777ac1672dba4"
      ],
      "author": {
        "name": "rakslice",
        "email": "rakslice@gmail.com",
        "time": "Tue Nov 26 00:46:43 2024 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Nov 26 00:47:22 2024 +0100"
      },
      "message": "fix for slirp ftp proxying putting slirp placeholder host ip in PORT commands\n\nFixes #82\n"
    },
    {
      "commit": "14739f508a82b66b76c82917c84777ac1672dba4",
      "tree": "849f6a8f864559b928a91275f9429003e62ebcaf",
      "parents": [
        "11d0ef193857975c82305ad0a08afb9228a87864",
        "3a4cb5a839d5b973a444ca2759497db354c8a29e"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Nov 19 01:42:07 2024 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Nov 19 01:42:07 2024 +0000"
      },
      "message": "Merge branch \u0027strerror-consistency\u0027 into \u0027master\u0027\n\nPrefer g_strerror() to strerror()\n\nSee merge request slirp/libslirp!146"
    },
    {
      "commit": "11d0ef193857975c82305ad0a08afb9228a87864",
      "tree": "32a282628e16c9a24fa7b5730d887872d348da04",
      "parents": [
        "4f27f209516d141cc5aecc39af0e8baa27326b5c",
        "480e4efd13ff06599be8201294a1757ca76cc74b"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Nov 19 01:41:19 2024 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Tue Nov 19 01:41:19 2024 +0000"
      },
      "message": "Merge branch \u0027vmstate-typeof-fix\u0027 into \u0027master\u0027\n\nvmstate.h: Prefer __typeof__ vice typeof\n\nSee merge request slirp/libslirp!145"
    },
    {
      "commit": "3a4cb5a839d5b973a444ca2759497db354c8a29e",
      "tree": "300dca59c1b900c611a1a4f3a7c9599a9e7d9532",
      "parents": [
        "4f27f209516d141cc5aecc39af0e8baa27326b5c"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Mon Nov 18 12:11:46 2024 -0800"
      },
      "committer": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Mon Nov 18 12:11:46 2024 -0800"
      },
      "message": "Prefer g_strerror() to strerror()\n\nUse g_strerror() for better cross platform compatibility: glib handles\nthe Windows \"deprecation\" (i.e., use strerror_s instead of strerror),\nfewer warnings at compile time.\n"
    },
    {
      "commit": "480e4efd13ff06599be8201294a1757ca76cc74b",
      "tree": "32a282628e16c9a24fa7b5730d887872d348da04",
      "parents": [
        "4f27f209516d141cc5aecc39af0e8baa27326b5c"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Mon Nov 18 09:43:40 2024 -0800"
      },
      "committer": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Mon Nov 18 11:59:16 2024 -0800"
      },
      "message": "vmstate.h: Prefer __typeof__ vice typeof\n\nClang masquerading as gcc on macOS (i.e., \"gcc\") borks on typeof(), but\nhappily accepts __typeof__().\n\nN.B., __typeof__ has been accepted by GCC and Clang for a long time, and\nrecently MS decided to support it as well.\n"
    },
    {
      "commit": "4f27f209516d141cc5aecc39af0e8baa27326b5c",
      "tree": "6f5b023c49a2bd9bfd444dbadbf25a61393a7e58",
      "parents": [
        "4795b8c078840bf9c868ca41900698b37151e729",
        "8a0f8c59de7980f0a7cec5eb040e341669b63a05"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 14 14:03:16 2024 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 14 14:03:16 2024 +0000"
      },
      "message": "Merge branch \u0027cksum-netbsd-update\u0027 into \u0027master\u0027\n\ncksum: NetBSD-adapted cksum()\n\nSee merge request slirp/libslirp!144"
    },
    {
      "commit": "8a0f8c59de7980f0a7cec5eb040e341669b63a05",
      "tree": "6f5b023c49a2bd9bfd444dbadbf25a61393a7e58",
      "parents": [
        "c558d93a70c2ea6e92194977113ce78372f1bbc2"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Wed Nov 13 10:42:55 2024 -0800"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 14 14:45:52 2024 +0100"
      },
      "message": "Review comments.\n"
    },
    {
      "commit": "c558d93a70c2ea6e92194977113ce78372f1bbc2",
      "tree": "1437d0e8c19c7c8c2d930c88f5840327024597fe",
      "parents": [
        "4795b8c078840bf9c868ca41900698b37151e729"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Tue Nov 05 13:37:28 2024 -0800"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 14 14:45:52 2024 +0100"
      },
      "message": "cksum: NetBSD-adapted cksum()\n\nUpdate cksum() to use more recent NetBSD-based checksum implementation.\nThe updated implementation includes both a 64-bit and 32-bit (the\ndefault) implementations. The 64-bit implementation has a longer stride\nlength, which may be beneficial to overall performance.\n\nUpdate the return types for cksum() and ip6_cksum() to uint16_t, which\nis what the checksum algorithm computes.\n"
    },
    {
      "commit": "4795b8c078840bf9c868ca41900698b37151e729",
      "tree": "255c7bca98b3beb0887bd67cadcf89fa06fd8272",
      "parents": [
        "2581b174e61165f56f68b7c594197363cc31b9e4"
      ],
      "author": {
        "name": "B. Scott Michel",
        "email": "scooter.phd@gmail.com",
        "time": "Thu Nov 14 14:42:19 2024 +0100"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Thu Nov 14 14:42:19 2024 +0100"
      },
      "message": "Introduce SLIRP_PRIsize/ssize_t\n"
    },
    {
      "commit": "2581b174e61165f56f68b7c594197363cc31b9e4",
      "tree": "c352346256175f97ad379c7206a13c20d65a4072",
      "parents": [
        "c706fd09076530da56e8a70022472e0636bcf1c9",
        "ad6efd0d1a3e72e0b24377cf6b4b69098dc91569"
      ],
      "author": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Nov 11 14:41:13 2024 +0000"
      },
      "committer": {
        "name": "Samuel Thibault",
        "email": "samuel.thibault@ens-lyon.org",
        "time": "Mon Nov 11 14:41:13 2024 +0000"
      },
      "message": "Merge branch \u0027arp-c-cleanups\u0027 into \u0027master\u0027\n\narp_table: use size_t to index arrays.\n\nSee merge request slirp/libslirp!142"
    }
  ],
  "next": "ad6efd0d1a3e72e0b24377cf6b4b69098dc91569"
}
