From: Eric Biggers Date: Thu, 5 Nov 2015 02:43:27 +0000 (-0600) Subject: Avoid passing NULL as memcpy source (undefined behavior) X-Git-Tag: v1.8.3~15 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=564aacbad3801ec37c2455e15b9296ecaef4eb93;hp=8fbdced08faf37472fd7174480b446c4b11578fb;ds=sidebyside Avoid passing NULL as memcpy source (undefined behavior) --- diff --git a/src/dentry.c b/src/dentry.c index ff1a2142..caa3a51b 100644 --- a/src/dentry.c +++ b/src/dentry.c @@ -504,7 +504,8 @@ calculate_dentry_full_path(struct wim_dentry *dentry) d = dentry; do { p -= d->d_name_nbytes / sizeof(utf16lechar); - memcpy(p, d->d_name, d->d_name_nbytes); + if (d->d_name_nbytes) + memcpy(p, d->d_name, d->d_name_nbytes); *--p = cpu_to_le16(WIM_PATH_SEPARATOR); d = d->d_parent; /* assumes d == d->d_parent for root */ } while (!dentry_is_root(d)); diff --git a/src/unix_apply.c b/src/unix_apply.c index f1962d98..ae9b8cea 100644 --- a/src/unix_apply.c +++ b/src/unix_apply.c @@ -156,7 +156,9 @@ unix_build_extraction_path(const struct wim_dentry *dentry, d = dentry; do { p -= d->d_extraction_name_nchars; - memcpy(p, d->d_extraction_name, d->d_extraction_name_nchars); + if (d->d_extraction_name_nchars) + memcpy(p, d->d_extraction_name, + d->d_extraction_name_nchars); *--p = '/'; d = d->d_parent; } while (!dentry_is_root(d) && will_extract_dentry(d)); diff --git a/src/win32_apply.c b/src/win32_apply.c index c31d2668..cb488a9f 100644 --- a/src/win32_apply.c +++ b/src/win32_apply.c @@ -901,7 +901,9 @@ build_extraction_path(const struct wim_dentry *dentry, d = d->d_parent) { p -= d->d_extraction_name_nchars; - wmemcpy(p, d->d_extraction_name, d->d_extraction_name_nchars); + if (d->d_extraction_name_nchars) + wmemcpy(p, d->d_extraction_name, + d->d_extraction_name_nchars); *--p = '\\'; } /* No leading slash */