From: Jan Janssen Date: Tue, 6 Sep 2022 08:14:25 +0000 (+0200) Subject: boot: Use mempcpy X-Git-Tag: v252-rc1~232^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=515581d66ab1068c9da8074166dc20e32cab1dce;p=thirdparty%2Fsystemd.git boot: Use mempcpy --- diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index 9c1d95e6725..a4804887acc 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -2416,14 +2416,8 @@ static void config_write_entries_to_variable(Config *config) { p = buffer = xmalloc(sz); - for (UINTN i = 0; i < config->entry_count; i++) { - UINTN l; - - l = strsize16(config->entries[i]->id); - memcpy(p, config->entries[i]->id, l); - - p += l; - } + for (UINTN i = 0; i < config->entry_count; i++) + p = mempcpy(p, config->entries[i]->id, strsize16(config->entries[i]->id)); assert(p == buffer + sz); diff --git a/src/boot/efi/cpio.c b/src/boot/efi/cpio.c index 9ffa935e0f6..b21cf53b465 100644 --- a/src/boot/efi/cpio.c +++ b/src/boot/efi/cpio.c @@ -116,8 +116,7 @@ static EFI_STATUS pack_cpio_one( *cpio_buffer = a; a = (char *) *cpio_buffer + *cpio_buffer_size; - memcpy(a, "070701", 6); /* magic ID */ - a += 6; + a = mempcpy(a, "070701", 6); /* magic ID */ a = write_cpio_word(a, (*inode_counter)++); /* inode */ a = write_cpio_word(a, access_mode | 0100000 /* = S_IFREG */); /* mode */ @@ -139,16 +138,14 @@ static EFI_STATUS pack_cpio_one( a = write_cpio_word(a, target_dir_prefix_size + fname_size + 2); /* fname size */ a = write_cpio_word(a, 0); /* "crc" */ - memcpy(a, target_dir_prefix, target_dir_prefix_size); - a += target_dir_prefix_size; + a = mempcpy(a, target_dir_prefix, target_dir_prefix_size); *(a++) = '/'; a = mangle_filename(a, fname); /* Pad to next multiple of 4 */ a = pad4(a, *cpio_buffer); - memcpy(a, contents, contents_size); - a += contents_size; + a = mempcpy(a, contents, contents_size); /* Pad to next multiple of 4 */ a = pad4(a, *cpio_buffer); @@ -198,8 +195,7 @@ static EFI_STATUS pack_cpio_dir( *cpio_buffer = a = xrealloc(*cpio_buffer, *cpio_buffer_size, *cpio_buffer_size + l); a = (char *) *cpio_buffer + *cpio_buffer_size; - memcpy(a, "070701", 6); /* magic ID */ - a += 6; + a = mempcpy(a, "070701", 6); /* magic ID */ a = write_cpio_word(a, (*inode_counter)++); /* inode */ a = write_cpio_word(a, access_mode | 0040000 /* = S_IFDIR */); /* mode */ @@ -215,8 +211,7 @@ static EFI_STATUS pack_cpio_dir( a = write_cpio_word(a, path_size + 1); /* fname size */ a = write_cpio_word(a, 0); /* "crc" */ - memcpy(a, path, path_size + 1); - a += path_size + 1; + a = mempcpy(a, path, path_size + 1); /* Pad to next multiple of 4 */ a = pad4(a, *cpio_buffer); diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c index 003ae8c99a0..3f6832e0c2d 100644 --- a/src/boot/efi/stub.c +++ b/src/boot/efi/stub.c @@ -69,8 +69,7 @@ static EFI_STATUS combine_initrd( /* Order matters, the real initrd must come first, since it might include microcode updates * which the kernel only looks for in the first cpio archive */ - memcpy(p, PHYSICAL_ADDRESS_TO_POINTER(initrd_base), initrd_size); - p += initrd_size; + p = mempcpy(p, PHYSICAL_ADDRESS_TO_POINTER(initrd_base), initrd_size); pad = ALIGN4(initrd_size) - initrd_size; if (pad > 0) { @@ -79,20 +78,12 @@ static EFI_STATUS combine_initrd( } } - if (credential_initrd) { - memcpy(p, credential_initrd, credential_initrd_size); - p += credential_initrd_size; - } - - if (global_credential_initrd) { - memcpy(p, global_credential_initrd, global_credential_initrd_size); - p += global_credential_initrd_size; - } - - if (sysext_initrd) { - memcpy(p, sysext_initrd, sysext_initrd_size); - p += sysext_initrd_size; - } + if (credential_initrd) + p = mempcpy(p, credential_initrd, credential_initrd_size); + if (global_credential_initrd) + p = mempcpy(p, global_credential_initrd, global_credential_initrd_size); + if (sysext_initrd) + p = mempcpy(p, sysext_initrd, sysext_initrd_size); assert((uint8_t*) PHYSICAL_ADDRESS_TO_POINTER(base) + n == p); diff --git a/src/boot/efi/util.c b/src/boot/efi/util.c index a41dbaa43e1..ce1f981817f 100644 --- a/src/boot/efi/util.c +++ b/src/boot/efi/util.c @@ -751,14 +751,11 @@ EFI_STATUS make_file_device_path(EFI_HANDLE device, const char16_t *file, EFI_DE end_node = NextDevicePathNode(end_node); size_t file_size = strsize16(file); - size_t dp_size = ((uint8_t *) end_node - (uint8_t *) dp) + END_DEVICE_PATH_LENGTH; + size_t dp_size = (uint8_t *) end_node - (uint8_t *) dp; /* Make a copy that can also hold a file media device path. */ - *ret_dp = xmalloc(dp_size + file_size + SIZE_OF_FILEPATH_DEVICE_PATH); - memcpy(*ret_dp, dp, dp_size); - - /* Point dp to the end node of the copied device path. */ - dp = (EFI_DEVICE_PATH *) ((uint8_t *) *ret_dp + dp_size - END_DEVICE_PATH_LENGTH); + *ret_dp = xmalloc(dp_size + file_size + SIZE_OF_FILEPATH_DEVICE_PATH + END_DEVICE_PATH_LENGTH); + dp = mempcpy(*ret_dp, dp, dp_size); /* Replace end node with file media device path. */ FILEPATH_DEVICE_PATH *file_dp = (FILEPATH_DEVICE_PATH *) dp;