atftpd require UDPv4 socket

Bug #2065463 reported by hiroaki mizuguchi
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
atftp (Ubuntu)
New
Undecided
Unassigned

Bug Description

attfpd(source package: atfp) on Ubuntu 24.04 listen by atftpd.socket.

atfptd.socket bind UDPv6/IPv6. But this socket accept IPv4 and IPv6 both packets.

atftpd process require UDPv4/IPv4 listen socket.

# My workaround

atftpd.socket listen UDPv4/IPv4 socket.

/etc/systemd/system/atftpd.socket.d/workaround.conf
[Socket]
ListenDatagram=
ListenDatagram=0.0.0.0:69

# Package Infomation / System Infomation

root@bootserver:~# lsb_release -rd
No LSB modules are available.
Description: Ubuntu 24.04 LTS
Release: 24.04
root@bootserver:~# apt-cache policy atftpd
atftpd:
  Installed: 0.8.0-3ubuntu3
  Candidate: 0.8.0-3ubuntu3
  Version table:
 *** 0.8.0-3ubuntu3 500
        500 http://ftp.iij.ad.jp/pub/linux/ubuntu/archive noble/universe amd64 Packages
        100 /var/lib/dpkg/status

# Errorlog

This DEBUG log indicates that there is a problem with this code https://salsa.debian.org/debian/atftp/-/blob/0.8.0-3/tftpd.c?ref_type=tags#L728-736

May 11 01:24:53 bootserver systemd[1]: Started atftpd.service - Advanced TFTP Server.
May 11 01:24:53 bootserver atftpd[4551]: Advanced Trivial FTP server started (0.8.0)
May 11 01:24:53 bootserver atftpd[4551]: started by inetd or socket activated
May 11 01:24:53 bootserver atftpd[4551]: logging level: 7
May 11 01:24:53 bootserver atftpd[4551]: directory: /srv/tftp/
May 11 01:24:53 bootserver atftpd[4551]: user: nobody.nogroup
May 11 01:24:53 bootserver atftpd[4551]: log file: syslog
May 11 01:24:53 bootserver atftpd[4551]: not forcing to listen on local interfaces.
May 11 01:24:53 bootserver atftpd[4551]: server timeout: 300
May 11 01:24:53 bootserver atftpd[4551]: tftp retry timeout: 5
May 11 01:24:53 bootserver atftpd[4551]: maximum number of thread: 100
May 11 01:24:53 bootserver atftpd[4551]: option timeout: enabled
May 11 01:24:53 bootserver atftpd[4551]: option tzise: enabled
May 11 01:24:53 bootserver atftpd[4551]: option blksize: enabled
May 11 01:24:53 bootserver atftpd[4551]: option windowsize: enabled
May 11 01:24:53 bootserver atftpd[4551]: option multicast: enabled
May 11 01:24:53 bootserver atftpd[4551]: address range: 239.255.0.0-255
May 11 01:24:53 bootserver atftpd[4551]: port range: 1758
May 11 01:25:16 bootserver atftpd[4551]: socket may listen on any address, including broadcast
May 11 01:25:16 bootserver atftpd[4551]: bind: Cannot assign requested address
May 11 01:25:16 bootserver atftpd[4551]: Creating new socket: :::0
May 11 01:25:16 bootserver atftpd[4551]: Server thread exiting
May 11 01:26:36 bootserver atftpd[4551]: SIGTERM received, stopping threads and exiting.
May 11 01:26:36 bootserver atftpd[4551]: tftpd.c: 468: select: Interrupted system call
May 11 01:26:36 bootserver systemd[1]: Stopping atftpd.service - Advanced TFTP Server...
May 11 01:26:36 bootserver atftpd[4551]: atftpd terminating after 300 seconds
May 11 01:26:36 bootserver systemd[1]: atftpd.service: Deactivated successfully.

# GDB debuging

(gdb) n
734 in tftpd.c
(gdb) p to
$6 = {ss_family = 10, __ss_padding = "\000\000\036y\000\000\000\000\000\000\000\000\000\000\002", '\000' <repeats 102 times>,
  __ss_align = 0}
(gdb) p *(struct sockaddr_in*)&to
$8 = {sin_family = 10, sin_port = 0, sin_addr = {s_addr = 31006}, sin_zero = "\000\000\000\000\000\000\000"}
(gdb) p *(struct sockaddr_in6*)&to
$9 = {sin6_family = 10, sin6_port = 0, sin6_flowinfo = 31006, sin6_addr = {__in6_u = {
      __u6_addr8 = "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000", __u6_addr16 = {0, 0, 0, 0, 2, 0, 0, 0},
      __u6_addr32 = {0, 0, 2, 0}}}, sin6_scope_id = 0}
(gdb) quit

root@bootserver:~# lsof -p 7298
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
in.tftpd 7298 atftpd cwd DIR 252,1 4096 2 /
in.tftpd 7298 atftpd rtd DIR 252,1 4096 2 /
in.tftpd 7298 atftpd txt REG 252,1 81040 3014777 /usr/sbin/atftpd
in.tftpd 7298 atftpd mem REG 252,1 2125328 3020752 /usr/lib/x86_64-linux-gnu/libc.so.6
in.tftpd 7298 atftpd mem REG 252,1 182944 3026891 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
in.tftpd 7298 atftpd mem REG 252,1 625344 3027015 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.11.2
in.tftpd 7298 atftpd mem REG 252,1 44064 3047322 /usr/lib/x86_64-linux-gnu/libwrap.so.0.7.6
in.tftpd 7298 atftpd mem REG 252,1 236616 3020748 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
in.tftpd 7298 atftpd 0u IPv6 63411 0t0 UDP *:tftp
in.tftpd 7298 atftpd 1u IPv6 63411 0t0 UDP *:tftp
in.tftpd 7298 atftpd 2u IPv6 63411 0t0 UDP *:tftp
in.tftpd 7298 atftpd 3u unix 0xffff9d588ed85800 0t0 63415 type=DGRAM (CONNECTED)
in.tftpd 7298 atftpd 4u sock 0,8 0t0 15261 protocol: UDPv6

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.