D3698: chg: fix an undefined behavior about memcpy
quark (Jun Wu)
phabricator at mercurial-scm.org
Wed Jun 6 19:56:58 UTC 2018
quark created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Spot by Wez Furlong. `memcpy(x, NULL, 0)` is undefined according to [1]:
[1]: https://stackoverflow.com/questions/5243012
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3698
AFFECTED FILES
contrib/chg/chg.c
CHANGE DETAILS
diff --git a/contrib/chg/chg.c b/contrib/chg/chg.c
--- a/contrib/chg/chg.c
+++ b/contrib/chg/chg.c
@@ -220,7 +220,10 @@
const char **argv = mallocx(sizeof(char *) * argsize);
memcpy(argv, baseargv, sizeof(baseargv));
- memcpy(argv + baseargvsize, opts->args, sizeof(char *) * opts->argsize);
+ if (opts->args) {
+ size_t size = sizeof(char *) * opts->argsize;
+ memcpy(argv + baseargvsize, opts->args, size);
+ }
argv[argsize - 1] = NULL;
if (putenv("CHGINTERNALMARK=") != 0)
To: quark, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list