summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2025-04-30 16:18:34 +0200
committerMichael Brown2025-04-30 16:32:03 +0200
commitb6f9e4bab082c3b7a9b587ef64109069fba59baa (patch)
treeb125fc073dcd1b8ea0dc37a16f8a62b01acf86aa /src
parent[image] Clear recorded replacement image immediately after consuming (diff)
downloadipxe-b6f9e4bab082c3b7a9b587ef64109069fba59baa.tar.gz
ipxe-b6f9e4bab082c3b7a9b587ef64109069fba59baa.tar.xz
ipxe-b6f9e4bab082c3b7a9b587ef64109069fba59baa.zip
[uaccess] Remove redundant copy_from_user() and copy_to_user()
Remove the now-redundant copy_from_user() and copy_to_user() wrapper functions. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/core/runtime.c1
-rw-r--r--src/arch/x86/drivers/xen/hvm.c1
-rw-r--r--src/arch/x86/image/elfboot.c1
-rw-r--r--src/arch/x86/image/initrd.c1
-rw-r--r--src/arch/x86/image/multiboot.c1
-rw-r--r--src/arch/x86/image/nbi.c1
-rw-r--r--src/arch/x86/image/pxe_image.c1
-rw-r--r--src/arch/x86/image/ucode.c1
-rw-r--r--src/arch/x86/include/realmode.h1
-rw-r--r--src/arch/x86/interface/pcbios/acpipwr.c1
-rw-r--r--src/arch/x86/interface/pcbios/bios_cachedhcp.c1
-rw-r--r--src/arch/x86/interface/pcbios/bios_reboot.c1
-rw-r--r--src/arch/x86/interface/pcbios/biosint.c1
-rw-r--r--src/arch/x86/interface/pcbios/hidemem.c1
-rw-r--r--src/arch/x86/interface/pcbios/int13.c1
-rw-r--r--src/arch/x86/interface/pcbios/memmap.c1
-rw-r--r--src/arch/x86/interface/pcbios/memtop_umalloc.c1
-rw-r--r--src/arch/x86/interface/pcbios/rsdp.c1
-rw-r--r--src/core/blocktrans.c1
-rw-r--r--src/core/cachedhcp.c1
-rw-r--r--src/core/downloader.c1
-rw-r--r--src/core/pixbuf.c1
-rw-r--r--src/core/sanboot.c1
-rw-r--r--src/drivers/bus/devtree.c1
-rw-r--r--src/drivers/bus/ecam.c1
-rw-r--r--src/drivers/bus/pci_settings.c1
-rw-r--r--src/drivers/bus/usb_settings.c1
-rw-r--r--src/drivers/infiniband/flexboot_nodnic.c1
-rw-r--r--src/drivers/infiniband/linda.c1
-rw-r--r--src/drivers/infiniband/mlx_utils_flexboot/src/mlx_memory_priv.c1
-rw-r--r--src/drivers/infiniband/qib7322.c1
-rw-r--r--src/drivers/linux/slirp.c1
-rw-r--r--src/drivers/net/ath/ath.h1
-rw-r--r--src/drivers/net/ath/ath5k/ath5k.h1
-rw-r--r--src/drivers/net/b44.c1
-rw-r--r--src/drivers/net/bnxt/bnxt.c1
-rw-r--r--src/drivers/net/eepro100.c1
-rw-r--r--src/drivers/net/etherfabric.c1
-rw-r--r--src/drivers/net/marvell/atl2_hw.c1
-rw-r--r--src/drivers/net/marvell/atl_hw.c1
-rw-r--r--src/drivers/net/myri10ge.c2
-rw-r--r--src/drivers/net/netvsc.c1
-rw-r--r--src/drivers/net/rtl818x/rtl818x.c1
-rw-r--r--src/drivers/net/sfc/efx_hunt.c1
-rw-r--r--src/drivers/net/sfc/sfc_hunt.c1
-rwxr-xr-xsrc/drivers/net/skge.c1
-rw-r--r--src/drivers/net/sky2.c1
-rw-r--r--src/drivers/net/tg3/tg3.c1
-rw-r--r--src/drivers/net/tg3/tg3_hw.c1
-rw-r--r--src/drivers/net/tg3/tg3_phy.c1
-rw-r--r--src/drivers/net/vmxnet3.c1
-rw-r--r--src/drivers/net/vxge/vxge_config.c1
-rw-r--r--src/drivers/net/vxge/vxge_traffic.c1
-rw-r--r--src/drivers/nvs/nvsvpd.c1
-rw-r--r--src/drivers/usb/usbblk.c1
-rw-r--r--src/hci/commands/cert_cmd.c1
-rw-r--r--src/hci/commands/image_cmd.c1
-rw-r--r--src/hci/commands/image_crypt_cmd.c1
-rw-r--r--src/hci/commands/image_trust_cmd.c1
-rw-r--r--src/hci/commands/pci_cmd.c1
-rw-r--r--src/hci/commands/usb_cmd.c1
-rw-r--r--src/image/der.c1
-rw-r--r--src/image/efi_image.c1
-rw-r--r--src/image/efi_siglist.c1
-rw-r--r--src/image/elf.c1
-rw-r--r--src/image/pnm.c1
-rw-r--r--src/image/segment.c1
-rw-r--r--src/include/ipxe/dummy_pio.h2
-rw-r--r--src/include/ipxe/iomap_virt.h2
-rw-r--r--src/include/ipxe/uaccess.h27
-rw-r--r--src/interface/efi/efi_bofm.c1
-rw-r--r--src/interface/efi/efi_cmdline.c1
-rw-r--r--src/interface/efi/efi_pci.c1
-rw-r--r--src/interface/xen/xenbus.c1
-rw-r--r--src/net/eapol.c1
-rw-r--r--src/net/fcoe.c1
-rw-r--r--src/net/lldp.c1
-rw-r--r--src/net/peerblk.c1
-rw-r--r--src/net/peermux.c1
-rw-r--r--src/net/tcp/httpblock.c1
-rw-r--r--src/net/tcp/syslogs.c1
-rw-r--r--src/net/udp/syslog.c1
-rw-r--r--src/tests/asn1_test.c1
-rw-r--r--src/tests/cpio_test.c1
-rw-r--r--src/tests/pixbuf_test.c1
-rw-r--r--src/tests/test.c1
-rw-r--r--src/usr/imgarchive.c1
-rw-r--r--src/usr/imgmgmt.c1
-rw-r--r--src/usr/imgtrust.c1
89 files changed, 90 insertions, 28 deletions
diff --git a/src/arch/x86/core/runtime.c b/src/arch/x86/core/runtime.c
index 1fdf80497..461188d04 100644
--- a/src/arch/x86/core/runtime.c
+++ b/src/arch/x86/core/runtime.c
@@ -32,6 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <assert.h>
diff --git a/src/arch/x86/drivers/xen/hvm.c b/src/arch/x86/drivers/xen/hvm.c
index b77cdd14c..cf41cc955 100644
--- a/src/arch/x86/drivers/xen/hvm.c
+++ b/src/arch/x86/drivers/xen/hvm.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/malloc.h>
#include <ipxe/pci.h>
diff --git a/src/arch/x86/image/elfboot.c b/src/arch/x86/image/elfboot.c
index 63a3460d3..f662e366f 100644
--- a/src/arch/x86/image/elfboot.c
+++ b/src/arch/x86/image/elfboot.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <errno.h>
#include <elf.h>
#include <ipxe/image.h>
diff --git a/src/arch/x86/image/initrd.c b/src/arch/x86/image/initrd.c
index 8acdd95f7..cb4879036 100644
--- a/src/arch/x86/image/initrd.c
+++ b/src/arch/x86/image/initrd.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <errno.h>
#include <initrd.h>
#include <ipxe/image.h>
diff --git a/src/arch/x86/image/multiboot.c b/src/arch/x86/image/multiboot.c
index 7c8963475..9444c4047 100644
--- a/src/arch/x86/image/multiboot.c
+++ b/src/arch/x86/image/multiboot.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <realmode.h>
diff --git a/src/arch/x86/image/nbi.c b/src/arch/x86/image/nbi.c
index 0a60283fb..0f57bdfcd 100644
--- a/src/arch/x86/image/nbi.c
+++ b/src/arch/x86/image/nbi.c
@@ -1,3 +1,4 @@
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <realmode.h>
diff --git a/src/arch/x86/image/pxe_image.c b/src/arch/x86/image/pxe_image.c
index d7acd0084..3e6cf7268 100644
--- a/src/arch/x86/image/pxe_image.c
+++ b/src/arch/x86/image/pxe_image.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*
*/
+#include <string.h>
#include <pxe.h>
#include <pxe_call.h>
#include <pic8259.h>
diff --git a/src/arch/x86/image/ucode.c b/src/arch/x86/image/ucode.c
index 0ae3863cb..fd4689e00 100644
--- a/src/arch/x86/image/ucode.c
+++ b/src/arch/x86/image/ucode.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <assert.h>
#include <errno.h>
#include <ipxe/uaccess.h>
diff --git a/src/arch/x86/include/realmode.h b/src/arch/x86/include/realmode.h
index 75f7d16e7..5cf644a23 100644
--- a/src/arch/x86/include/realmode.h
+++ b/src/arch/x86/include/realmode.h
@@ -2,6 +2,7 @@
#define REALMODE_H
#include <stdint.h>
+#include <string.h>
#include <registers.h>
#include <ipxe/uaccess.h>
diff --git a/src/arch/x86/interface/pcbios/acpipwr.c b/src/arch/x86/interface/pcbios/acpipwr.c
index bff53806b..cb82ef1b4 100644
--- a/src/arch/x86/interface/pcbios/acpipwr.c
+++ b/src/arch/x86/interface/pcbios/acpipwr.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <byteswap.h>
diff --git a/src/arch/x86/interface/pcbios/bios_cachedhcp.c b/src/arch/x86/interface/pcbios/bios_cachedhcp.c
index 05d89b3b7..897858143 100644
--- a/src/arch/x86/interface/pcbios/bios_cachedhcp.c
+++ b/src/arch/x86/interface/pcbios/bios_cachedhcp.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
+#include <string.h>
#include <ipxe/init.h>
#include <ipxe/cachedhcp.h>
#include <realmode.h>
diff --git a/src/arch/x86/interface/pcbios/bios_reboot.c b/src/arch/x86/interface/pcbios/bios_reboot.c
index 463470245..c7f25405f 100644
--- a/src/arch/x86/interface/pcbios/bios_reboot.c
+++ b/src/arch/x86/interface/pcbios/bios_reboot.c
@@ -29,6 +29,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*
*/
+#include <string.h>
#include <ipxe/reboot.h>
#include <realmode.h>
#include <bios.h>
diff --git a/src/arch/x86/interface/pcbios/biosint.c b/src/arch/x86/interface/pcbios/biosint.c
index 667e9ed81..f5e54ede8 100644
--- a/src/arch/x86/interface/pcbios/biosint.c
+++ b/src/arch/x86/interface/pcbios/biosint.c
@@ -1,3 +1,4 @@
+#include <string.h>
#include <errno.h>
#include <realmode.h>
#include <biosint.h>
diff --git a/src/arch/x86/interface/pcbios/hidemem.c b/src/arch/x86/interface/pcbios/hidemem.c
index 1a3022c5d..6983c1f4a 100644
--- a/src/arch/x86/interface/pcbios/hidemem.c
+++ b/src/arch/x86/interface/pcbios/hidemem.c
@@ -22,6 +22,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <assert.h>
#include <realmode.h>
#include <biosint.h>
diff --git a/src/arch/x86/interface/pcbios/int13.c b/src/arch/x86/interface/pcbios/int13.c
index 73fdfebd3..045d78e8d 100644
--- a/src/arch/x86/interface/pcbios/int13.c
+++ b/src/arch/x86/interface/pcbios/int13.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <limits.h>
#include <byteswap.h>
#include <errno.h>
diff --git a/src/arch/x86/interface/pcbios/memmap.c b/src/arch/x86/interface/pcbios/memmap.c
index daae382b8..3bc1229aa 100644
--- a/src/arch/x86/interface/pcbios/memmap.c
+++ b/src/arch/x86/interface/pcbios/memmap.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
+#include <string.h>
#include <errno.h>
#include <realmode.h>
#include <bios.h>
diff --git a/src/arch/x86/interface/pcbios/memtop_umalloc.c b/src/arch/x86/interface/pcbios/memtop_umalloc.c
index d4489fb01..bfaffc4bb 100644
--- a/src/arch/x86/interface/pcbios/memtop_umalloc.c
+++ b/src/arch/x86/interface/pcbios/memtop_umalloc.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <limits.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/uaccess.h>
#include <ipxe/hidemem.h>
diff --git a/src/arch/x86/interface/pcbios/rsdp.c b/src/arch/x86/interface/pcbios/rsdp.c
index 6bcf19b18..6913be552 100644
--- a/src/arch/x86/interface/pcbios/rsdp.c
+++ b/src/arch/x86/interface/pcbios/rsdp.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdint.h>
+#include <string.h>
#include <realmode.h>
#include <bios.h>
#include <ipxe/acpi.h>
diff --git a/src/core/blocktrans.c b/src/core/blocktrans.c
index 362721747..b793185fe 100644
--- a/src/core/blocktrans.c
+++ b/src/core/blocktrans.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/iobuf.h>
diff --git a/src/core/cachedhcp.c b/src/core/cachedhcp.c
index 0d400db16..1510f3321 100644
--- a/src/core/cachedhcp.c
+++ b/src/core/cachedhcp.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/dhcppkt.h>
#include <ipxe/init.h>
diff --git a/src/core/downloader.c b/src/core/downloader.c
index 449761836..9950fe5e4 100644
--- a/src/core/downloader.c
+++ b/src/core/downloader.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <syslog.h>
#include <ipxe/iobuf.h>
diff --git a/src/core/pixbuf.c b/src/core/pixbuf.c
index d0b80b2a9..506a28c38 100644
--- a/src/core/pixbuf.c
+++ b/src/core/pixbuf.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/umalloc.h>
#include <ipxe/image.h>
diff --git a/src/core/sanboot.c b/src/core/sanboot.c
index bdac813ff..e90c5ef1d 100644
--- a/src/core/sanboot.c
+++ b/src/core/sanboot.c
@@ -32,6 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/xfer.h>
diff --git a/src/drivers/bus/devtree.c b/src/drivers/bus/devtree.c
index cbd8ea8fa..654f8d14f 100644
--- a/src/drivers/bus/devtree.c
+++ b/src/drivers/bus/devtree.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/device.h>
#include <ipxe/fdt.h>
diff --git a/src/drivers/bus/ecam.c b/src/drivers/bus/ecam.c
index 58d513e88..35556a8d9 100644
--- a/src/drivers/bus/ecam.c
+++ b/src/drivers/bus/ecam.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <errno.h>
#include <ipxe/uaccess.h>
#include <ipxe/ecam.h>
diff --git a/src/drivers/bus/pci_settings.c b/src/drivers/bus/pci_settings.c
index 98005559d..84aa76827 100644
--- a/src/drivers/bus/pci_settings.c
+++ b/src/drivers/bus/pci_settings.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/pci.h>
#include <ipxe/settings.h>
diff --git a/src/drivers/bus/usb_settings.c b/src/drivers/bus/usb_settings.c
index db6f94d8a..4fd190d83 100644
--- a/src/drivers/bus/usb_settings.c
+++ b/src/drivers/bus/usb_settings.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/usb.h>
#include <ipxe/settings.h>
diff --git a/src/drivers/infiniband/flexboot_nodnic.c b/src/drivers/infiniband/flexboot_nodnic.c
index c6e19b955..a9e6fdd71 100644
--- a/src/drivers/infiniband/flexboot_nodnic.c
+++ b/src/drivers/infiniband/flexboot_nodnic.c
@@ -20,6 +20,7 @@
FILE_LICENCE ( GPL2_OR_LATER );
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <ipxe/pci.h>
diff --git a/src/drivers/infiniband/linda.c b/src/drivers/infiniband/linda.c
index 0c8a043a1..2e2b469e4 100644
--- a/src/drivers/infiniband/linda.c
+++ b/src/drivers/infiniband/linda.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <assert.h>
diff --git a/src/drivers/infiniband/mlx_utils_flexboot/src/mlx_memory_priv.c b/src/drivers/infiniband/mlx_utils_flexboot/src/mlx_memory_priv.c
index e368d459b..b35c30dee 100644
--- a/src/drivers/infiniband/mlx_utils_flexboot/src/mlx_memory_priv.c
+++ b/src/drivers/infiniband/mlx_utils_flexboot/src/mlx_memory_priv.c
@@ -7,6 +7,7 @@
#include <ipxe/malloc.h>
#include <stddef.h>
+#include <string.h>
#include <byteswap.h>
#include <ipxe/io.h>
#include "../../mlx_utils/include/private/mlx_memory_priv.h"
diff --git a/src/drivers/infiniband/qib7322.c b/src/drivers/infiniband/qib7322.c
index a011dafc1..a9e4566dc 100644
--- a/src/drivers/infiniband/qib7322.c
+++ b/src/drivers/infiniband/qib7322.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <assert.h>
diff --git a/src/drivers/linux/slirp.c b/src/drivers/linux/slirp.c
index 8341c9676..d7ab6419e 100644
--- a/src/drivers/linux/slirp.c
+++ b/src/drivers/linux/slirp.c
@@ -18,6 +18,7 @@
*/
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/netdevice.h>
#include <ipxe/ethernet.h>
diff --git a/src/drivers/net/ath/ath.h b/src/drivers/net/ath/ath.h
index 589bb5634..21f795b70 100644
--- a/src/drivers/net/ath/ath.h
+++ b/src/drivers/net/ath/ath.h
@@ -23,6 +23,7 @@
FILE_LICENCE ( BSD2 );
#include <unistd.h>
+#include <string.h>
#include <ipxe/net80211.h>
/* This block of functions are from kernel.h v3.0.1 */
diff --git a/src/drivers/net/ath/ath5k/ath5k.h b/src/drivers/net/ath/ath5k/ath5k.h
index fa62e8ce5..727d41279 100644
--- a/src/drivers/net/ath/ath5k/ath5k.h
+++ b/src/drivers/net/ath/ath5k/ath5k.h
@@ -24,6 +24,7 @@
FILE_LICENCE ( MIT );
#include <stddef.h>
+#include <string.h>
#include <byteswap.h>
#include <ipxe/io.h>
#include <ipxe/netdevice.h>
diff --git a/src/drivers/net/b44.c b/src/drivers/net/b44.c
index 30ece5574..c6ca99865 100644
--- a/src/drivers/net/b44.c
+++ b/src/drivers/net/b44.c
@@ -31,6 +31,7 @@
FILE_LICENCE ( GPL2_OR_LATER );
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <stdio.h>
diff --git a/src/drivers/net/bnxt/bnxt.c b/src/drivers/net/bnxt/bnxt.c
index 5de8d094e..402439eef 100644
--- a/src/drivers/net/bnxt/bnxt.c
+++ b/src/drivers/net/bnxt/bnxt.c
@@ -3,6 +3,7 @@ FILE_LICENCE ( GPL2_ONLY );
#include <mii.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <byteswap.h>
diff --git a/src/drivers/net/eepro100.c b/src/drivers/net/eepro100.c
index 49b00d443..318db1883 100644
--- a/src/drivers/net/eepro100.c
+++ b/src/drivers/net/eepro100.c
@@ -101,6 +101,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
*/
#include <stdint.h>
+#include <string.h>
#include <byteswap.h>
#include <errno.h>
#include <stdio.h>
diff --git a/src/drivers/net/etherfabric.c b/src/drivers/net/etherfabric.c
index be30b71f7..a58b71568 100644
--- a/src/drivers/net/etherfabric.c
+++ b/src/drivers/net/etherfabric.c
@@ -21,6 +21,7 @@ FILE_LICENCE ( GPL_ANY );
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
diff --git a/src/drivers/net/marvell/atl2_hw.c b/src/drivers/net/marvell/atl2_hw.c
index 805820709..07822a9c2 100644
--- a/src/drivers/net/marvell/atl2_hw.c
+++ b/src/drivers/net/marvell/atl2_hw.c
@@ -31,6 +31,7 @@
FILE_LICENCE ( BSD2 );
+#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/src/drivers/net/marvell/atl_hw.c b/src/drivers/net/marvell/atl_hw.c
index e0843e6f4..fa7f2a9b8 100644
--- a/src/drivers/net/marvell/atl_hw.c
+++ b/src/drivers/net/marvell/atl_hw.c
@@ -31,6 +31,7 @@
FILE_LICENCE ( BSD2 );
+#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/src/drivers/net/myri10ge.c b/src/drivers/net/myri10ge.c
index 6d0f723f2..fb9dc01b2 100644
--- a/src/drivers/net/myri10ge.c
+++ b/src/drivers/net/myri10ge.c
@@ -74,7 +74,7 @@ FILE_LICENCE ( GPL2_ONLY );
*/
#include <stdint.h>
-
+#include <string.h>
#include <byteswap.h>
#include <errno.h>
#include <ipxe/ethernet.h>
diff --git a/src/drivers/net/netvsc.c b/src/drivers/net/netvsc.c
index 4bdf7b517..9b6ee88b4 100644
--- a/src/drivers/net/netvsc.c
+++ b/src/drivers/net/netvsc.c
@@ -32,6 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
* bus (VMBus). It provides a transport layer for RNDIS packets.
*/
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <byteswap.h>
diff --git a/src/drivers/net/rtl818x/rtl818x.c b/src/drivers/net/rtl818x/rtl818x.c
index 599d36fad..3bae8a797 100644
--- a/src/drivers/net/rtl818x/rtl818x.c
+++ b/src/drivers/net/rtl818x/rtl818x.c
@@ -20,6 +20,7 @@
FILE_LICENCE(GPL2_ONLY);
#include <stdint.h>
+#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/src/drivers/net/sfc/efx_hunt.c b/src/drivers/net/sfc/efx_hunt.c
index abe3e8320..92c0fda62 100644
--- a/src/drivers/net/sfc/efx_hunt.c
+++ b/src/drivers/net/sfc/efx_hunt.c
@@ -21,6 +21,7 @@
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
diff --git a/src/drivers/net/sfc/sfc_hunt.c b/src/drivers/net/sfc/sfc_hunt.c
index 43ac229ab..f763fc9d0 100644
--- a/src/drivers/net/sfc/sfc_hunt.c
+++ b/src/drivers/net/sfc/sfc_hunt.c
@@ -19,6 +19,7 @@
***************************************************************************/
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <byteswap.h>
diff --git a/src/drivers/net/skge.c b/src/drivers/net/skge.c
index cc7f0b91b..828a2a4c9 100755
--- a/src/drivers/net/skge.c
+++ b/src/drivers/net/skge.c
@@ -31,6 +31,7 @@
FILE_LICENCE ( GPL2_ONLY );
#include <stdint.h>
+#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/src/drivers/net/sky2.c b/src/drivers/net/sky2.c
index 4f8ec3e42..db3f6aaa1 100644
--- a/src/drivers/net/sky2.c
+++ b/src/drivers/net/sky2.c
@@ -28,6 +28,7 @@
FILE_LICENCE ( GPL2_ONLY );
#include <stdint.h>
+#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
diff --git a/src/drivers/net/tg3/tg3.c b/src/drivers/net/tg3/tg3.c
index 05af22d61..a6736305c 100644
--- a/src/drivers/net/tg3/tg3.c
+++ b/src/drivers/net/tg3/tg3.c
@@ -3,6 +3,7 @@ FILE_LICENCE ( GPL2_ONLY );
#include <mii.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <byteswap.h>
diff --git a/src/drivers/net/tg3/tg3_hw.c b/src/drivers/net/tg3/tg3_hw.c
index 9a70413b6..5c9506dce 100644
--- a/src/drivers/net/tg3/tg3_hw.c
+++ b/src/drivers/net/tg3/tg3_hw.c
@@ -18,6 +18,7 @@
FILE_LICENCE ( GPL2_ONLY );
#include <mii.h>
+#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
diff --git a/src/drivers/net/tg3/tg3_phy.c b/src/drivers/net/tg3/tg3_phy.c
index e88b0be0f..a2322329e 100644
--- a/src/drivers/net/tg3/tg3_phy.c
+++ b/src/drivers/net/tg3/tg3_phy.c
@@ -1,6 +1,7 @@
#include <mii.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <byteswap.h>
diff --git a/src/drivers/net/vmxnet3.c b/src/drivers/net/vmxnet3.c
index 3800d6b72..2cc6738f2 100644
--- a/src/drivers/net/vmxnet3.c
+++ b/src/drivers/net/vmxnet3.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <byteswap.h>
diff --git a/src/drivers/net/vxge/vxge_config.c b/src/drivers/net/vxge/vxge_config.c
index f4d217097..8c6ee9e96 100644
--- a/src/drivers/net/vxge/vxge_config.c
+++ b/src/drivers/net/vxge/vxge_config.c
@@ -16,6 +16,7 @@ FILE_LICENCE(GPL2_ONLY);
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <ipxe/malloc.h>
#include <ipxe/pci.h>
#include <ipxe/iobuf.h>
diff --git a/src/drivers/net/vxge/vxge_traffic.c b/src/drivers/net/vxge/vxge_traffic.c
index dbd799015..0adaea2aa 100644
--- a/src/drivers/net/vxge/vxge_traffic.c
+++ b/src/drivers/net/vxge/vxge_traffic.c
@@ -15,6 +15,7 @@
FILE_LICENCE(GPL2_ONLY);
#include <ipxe/netdevice.h>
+#include <string.h>
#include <errno.h>
#include "vxge_traffic.h"
diff --git a/src/drivers/nvs/nvsvpd.c b/src/drivers/nvs/nvsvpd.c
index 3e88531c7..195973319 100644
--- a/src/drivers/nvs/nvsvpd.c
+++ b/src/drivers/nvs/nvsvpd.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/nvs.h>
#include <ipxe/pci.h>
diff --git a/src/drivers/usb/usbblk.c b/src/drivers/usb/usbblk.c
index 39adc012f..cb377efb0 100644
--- a/src/drivers/usb/usbblk.c
+++ b/src/drivers/usb/usbblk.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/usb.h>
#include <ipxe/scsi.h>
diff --git a/src/hci/commands/cert_cmd.c b/src/hci/commands/cert_cmd.c
index 24b18bf5c..75d2ccbed 100644
--- a/src/hci/commands/cert_cmd.c
+++ b/src/hci/commands/cert_cmd.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <getopt.h>
#include <ipxe/x509.h>
diff --git a/src/hci/commands/image_cmd.c b/src/hci/commands/image_cmd.c
index bf97b4deb..4b42695c4 100644
--- a/src/hci/commands/image_cmd.c
+++ b/src/hci/commands/image_cmd.c
@@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <getopt.h>
#include <ipxe/image.h>
diff --git a/src/hci/commands/image_crypt_cmd.c b/src/hci/commands/image_crypt_cmd.c
index 26e9d79f8..4dfb5b131 100644
--- a/src/hci/commands/image_crypt_cmd.c
+++ b/src/hci/commands/image_crypt_cmd.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdio.h>
+#include <string.h>
#include <getopt.h>
#include <ipxe/image.h>
#include <ipxe/command.h>
diff --git a/src/hci/commands/image_trust_cmd.c b/src/hci/commands/image_trust_cmd.c
index b34378f93..9b9e3f859 100644
--- a/src/hci/commands/image_trust_cmd.c
+++ b/src/hci/commands/image_trust_cmd.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdio.h>
+#include <string.h>
#include <getopt.h>
#include <ipxe/image.h>
#include <ipxe/command.h>
diff --git a/src/hci/commands/pci_cmd.c b/src/hci/commands/pci_cmd.c
index 5bae66fbe..fa1fa5ece 100644
--- a/src/hci/commands/pci_cmd.c
+++ b/src/hci/commands/pci_cmd.c
@@ -22,6 +22,7 @@
*/
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <getopt.h>
#include <ipxe/pci.h>
diff --git a/src/hci/commands/usb_cmd.c b/src/hci/commands/usb_cmd.c
index d1086fd7e..4ee2f2ddb 100644
--- a/src/hci/commands/usb_cmd.c
+++ b/src/hci/commands/usb_cmd.c
@@ -22,6 +22,7 @@
*/
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <getopt.h>
#include <ipxe/usb.h>
diff --git a/src/image/der.c b/src/image/der.c
index 600e163c9..67117d43b 100644
--- a/src/image/der.c
+++ b/src/image/der.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/asn1.h>
diff --git a/src/image/efi_image.c b/src/image/efi_image.c
index f71630f4a..f7ee7ff50 100644
--- a/src/image/efi_image.c
+++ b/src/image/efi_image.c
@@ -21,6 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <errno.h>
#include <stdlib.h>
+#include <string.h>
#include <wchar.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/efi_snp.h>
diff --git a/src/image/efi_siglist.c b/src/image/efi_siglist.c
index 2bd273dbd..b264ac558 100644
--- a/src/image/efi_siglist.c
+++ b/src/image/efi_siglist.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/asn1.h>
#include <ipxe/der.h>
diff --git a/src/image/elf.c b/src/image/elf.c
index 83712c3b0..97e07f37f 100644
--- a/src/image/elf.c
+++ b/src/image/elf.c
@@ -33,6 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
* common ELF-related functionality.
*/
+#include <string.h>
#include <errno.h>
#include <elf.h>
#include <ipxe/segment.h>
diff --git a/src/image/pnm.c b/src/image/pnm.c
index 4b5020b64..489a43304 100644
--- a/src/image/pnm.c
+++ b/src/image/pnm.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ctype.h>
#include <ipxe/image.h>
diff --git a/src/image/segment.c b/src/image/segment.c
index 2cb637dc2..52272170a 100644
--- a/src/image/segment.c
+++ b/src/image/segment.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*
*/
+#include <string.h>
#include <errno.h>
#include <ipxe/uaccess.h>
#include <ipxe/io.h>
diff --git a/src/include/ipxe/dummy_pio.h b/src/include/ipxe/dummy_pio.h
index 1cdabba14..e7a4cabef 100644
--- a/src/include/ipxe/dummy_pio.h
+++ b/src/include/ipxe/dummy_pio.h
@@ -13,6 +13,8 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
+
#define DUMMY_INX( _prefix, _suffix, _type ) \
static inline __always_inline _type \
IOAPI_INLINE ( _prefix, in ## _suffix ) ( volatile _type *io_addr __unused) { \
diff --git a/src/include/ipxe/iomap_virt.h b/src/include/ipxe/iomap_virt.h
index 4962b7c37..731d083d5 100644
--- a/src/include/ipxe/iomap_virt.h
+++ b/src/include/ipxe/iomap_virt.h
@@ -9,6 +9,8 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <stddef.h>
+
#ifdef IOMAP_VIRT
#define IOMAP_PREFIX_virt
#else
diff --git a/src/include/ipxe/uaccess.h b/src/include/ipxe/uaccess.h
index 948ef1fa2..82f29f793 100644
--- a/src/include/ipxe/uaccess.h
+++ b/src/include/ipxe/uaccess.h
@@ -11,7 +11,6 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
-#include <string.h>
#include <ipxe/api.h>
#include <config/ioapi.h>
@@ -127,30 +126,4 @@ virt_to_phys ( volatile const void *virt );
*/
void * __attribute__ (( const )) phys_to_virt ( physaddr_t phys );
-/**
- * Copy data to user buffer
- *
- * @v dest Destination
- * @v dest_off Destination offset
- * @v src Source
- * @v len Length
- */
-static inline __always_inline void
-copy_to_user ( userptr_t dest, off_t dest_off, const void *src, size_t len ) {
- memcpy ( ( dest + dest_off ), src, len );
-}
-
-/**
- * Copy data from user buffer
- *
- * @v dest Destination
- * @v src Source
- * @v src_off Source offset
- * @v len Length
- */
-static inline __always_inline void
-copy_from_user ( void *dest, userptr_t src, off_t src_off, size_t len ) {
- memcpy ( dest, ( src + src_off ), len );
-}
-
#endif /* _IPXE_UACCESS_H */
diff --git a/src/interface/efi/efi_bofm.c b/src/interface/efi/efi_bofm.c
index 7d1d3619f..3d956800e 100644
--- a/src/interface/efi/efi_bofm.c
+++ b/src/interface/efi/efi_bofm.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <errno.h>
#include <ipxe/bofm.h>
#include <ipxe/efi/efi.h>
diff --git a/src/interface/efi/efi_cmdline.c b/src/interface/efi/efi_cmdline.c
index b33bebd8c..13ad0fc35 100644
--- a/src/interface/efi/efi_cmdline.c
+++ b/src/interface/efi/efi_cmdline.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <ipxe/init.h>
diff --git a/src/interface/efi/efi_pci.c b/src/interface/efi/efi_pci.c
index b8c7df38d..1b1f05816 100644
--- a/src/interface/efi/efi_pci.c
+++ b/src/interface/efi/efi_pci.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/pci.h>
#include <ipxe/acpi.h>
diff --git a/src/interface/xen/xenbus.c b/src/interface/xen/xenbus.c
index 5dd01dfa3..8b5ee0a0d 100644
--- a/src/interface/xen/xenbus.c
+++ b/src/interface/xen/xenbus.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/malloc.h>
#include <ipxe/device.h>
diff --git a/src/net/eapol.c b/src/net/eapol.c
index 8b09ca231..0c573d198 100644
--- a/src/net/eapol.c
+++ b/src/net/eapol.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
#include <assert.h>
#include <errno.h>
#include <byteswap.h>
diff --git a/src/net/fcoe.c b/src/net/fcoe.c
index 9f3ddf88b..d54f1d431 100644
--- a/src/net/fcoe.c
+++ b/src/net/fcoe.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stddef.h>
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <byteswap.h>
#include <ipxe/if_ether.h>
diff --git a/src/net/lldp.c b/src/net/lldp.c
index a854d0ace..2b707c874 100644
--- a/src/net/lldp.c
+++ b/src/net/lldp.c
@@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <byteswap.h>
#include <ipxe/iobuf.h>
diff --git a/src/net/peerblk.c b/src/net/peerblk.c
index bbd5f16ed..58b185102 100644
--- a/src/net/peerblk.c
+++ b/src/net/peerblk.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/http.h>
#include <ipxe/iobuf.h>
diff --git a/src/net/peermux.c b/src/net/peermux.c
index 431ca76e0..5c814b03e 100644
--- a/src/net/peermux.c
+++ b/src/net/peermux.c
@@ -25,6 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/uri.h>
#include <ipxe/xferbuf.h>
diff --git a/src/net/tcp/httpblock.c b/src/net/tcp/httpblock.c
index 156f11e47..8eff1942c 100644
--- a/src/net/tcp/httpblock.c
+++ b/src/net/tcp/httpblock.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <stdint.h>
+#include <string.h>
#include <ipxe/blocktrans.h>
#include <ipxe/blockdev.h>
#include <ipxe/acpi.h>
diff --git a/src/net/tcp/syslogs.c b/src/net/tcp/syslogs.c
index f1f70d59e..5676f3e3e 100644
--- a/src/net/tcp/syslogs.c
+++ b/src/net/tcp/syslogs.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <byteswap.h>
#include <ipxe/xfer.h>
#include <ipxe/open.h>
diff --git a/src/net/udp/syslog.c b/src/net/udp/syslog.c
index a45fc459d..198c86ef7 100644
--- a/src/net/udp/syslog.c
+++ b/src/net/udp/syslog.c
@@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
#include <byteswap.h>
#include <ipxe/xfer.h>
diff --git a/src/tests/asn1_test.c b/src/tests/asn1_test.c
index df3f01b63..b522b85d7 100644
--- a/src/tests/asn1_test.c
+++ b/src/tests/asn1_test.c
@@ -33,6 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#undef NDEBUG
#include <stdlib.h>
+#include <string.h>
#include <assert.h>
#include <ipxe/image.h>
#include <ipxe/asn1.h>
diff --git a/src/tests/cpio_test.c b/src/tests/cpio_test.c
index 7eb8b2c74..24baf947b 100644
--- a/src/tests/cpio_test.c
+++ b/src/tests/cpio_test.c
@@ -33,6 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#undef NDEBUG
#include <stdlib.h>
+#include <string.h>
#include <ipxe/cpio.h>
#include <ipxe/test.h>
diff --git a/src/tests/pixbuf_test.c b/src/tests/pixbuf_test.c
index 1f82e0018..a8ea1151e 100644
--- a/src/tests/pixbuf_test.c
+++ b/src/tests/pixbuf_test.c
@@ -32,6 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/* Forcibly enable assertions */
#undef NDEBUG
+#include <string.h>
#include <assert.h>
#include <ipxe/image.h>
#include <ipxe/pixbuf.h>
diff --git a/src/tests/test.c b/src/tests/test.c
index 4c49d4c16..1ec4b21ef 100644
--- a/src/tests/test.c
+++ b/src/tests/test.c
@@ -34,6 +34,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stddef.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/test.h>
diff --git a/src/usr/imgarchive.c b/src/usr/imgarchive.c
index 6849dd510..91600760e 100644
--- a/src/usr/imgarchive.c
+++ b/src/usr/imgarchive.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdio.h>
+#include <string.h>
#include <ipxe/image.h>
#include <usr/imgarchive.h>
diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c
index 054137696..65b52fd3a 100644
--- a/src/usr/imgmgmt.c
+++ b/src/usr/imgmgmt.c
@@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <ipxe/image.h>
#include <ipxe/downloader.h>
diff --git a/src/usr/imgtrust.c b/src/usr/imgtrust.c
index 7f7e7ed14..4eb631e79 100644
--- a/src/usr/imgtrust.c
+++ b/src/usr/imgtrust.c
@@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdlib.h>
+#include <string.h>
#include <errno.h>
#include <time.h>
#include <syslog.h>