From: Eric Biggers Date: Tue, 1 Jan 2013 06:12:07 +0000 (-0600) Subject: Fix memcpy()s with overlapping buffers X-Git-Tag: v1.2.3~3 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=fd17faf910041fb68e3e025c7f45712d05a23533;ds=inline Fix memcpy()s with overlapping buffers --- diff --git a/src/dentry.c b/src/dentry.c index 08c08ab6..03d56fc7 100644 --- a/src/dentry.c +++ b/src/dentry.c @@ -1117,9 +1117,9 @@ void inode_remove_ads(struct wim_inode *inode, u16 idx, destroy_ads_entry(ads_entry); - memcpy(&inode->i_ads_entries[idx], - &inode->i_ads_entries[idx + 1], - (inode->i_num_ads - idx - 1) * sizeof(inode->i_ads_entries[0])); + memmove(&inode->i_ads_entries[idx], + &inode->i_ads_entries[idx + 1], + (inode->i_num_ads - idx - 1) * sizeof(inode->i_ads_entries[0])); inode->i_num_ads--; } #endif diff --git a/src/xml.c b/src/xml.c index ca2ec3e7..9b161c28 100644 --- a/src/xml.c +++ b/src/xml.c @@ -952,9 +952,9 @@ void xml_delete_image(struct wim_info **wim_info_p, int image) destroy_image_info(&wim_info->images[image - 1]); - memcpy(&wim_info->images[image - 1], - &wim_info->images[image], - (wim_info->num_images - image) * sizeof(struct image_info)); + memmove(&wim_info->images[image - 1], + &wim_info->images[image], + (wim_info->num_images - image) * sizeof(struct image_info)); if (--wim_info->num_images == 0) { free_wim_info(wim_info);