Supporting broken TFTP clients with tftpd-hpa

tftpd-hpa can easily be configured to support broken TFTP clients by using a remap file. Verify that your TFTP server supports a remap file by typing

  /usr/sbin/in.tftpd -V

You should see output such as

  [root@dolphin ~]# /usr/sbin/in.tftpd -V
  tftp-hpa 0.40, with remap, with tcpwrappers

If the “with remap” text is not present, then you need to rebuild your TFTP server with remapping support before proceeding.

Create the file /etc/tftpd.map containing

  # Convert backslashes to slashes
  rg \\ /

Edit /etc/xinetd.d/tftp and append

  -m /etc/tftpd.map

to the server_args line. Your modified /etc/xinetd.d/tftp file should look something like

  service tftp
  {
      disable                 = no
      socket_type             = dgram
      protocol                = udp
      wait                    = yes
      user                    = root
      server                  = /usr/sbin/in.tftpd
      server_args             = -s /var/lib/tftpboot -m /etc/tftpd.map
  }

Kill off any existing tftpd processes and restart xinetd:

  killall tftpd
  killall in.tftpd
  /etc/init.d/xinetd restart

The TFTP server should now accept paths using either the usual forward slash (/) or a backslash (\) as a path separator.