summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-08-15 07:08:29 (GMT)
committerGitHub <noreply@github.com>2018-08-15 07:08:29 (GMT)
commit981aa46dce926ce54ec1a2adbb73d1f405ef66ff (patch)
tree6c9774ed390d60d2bcffa8f16f8fe8e50f162f48
parent3e630c541b35c96bfe5619165255e559f577ee71 (diff)
downloadcpython-981aa46dce926ce54ec1a2adbb73d1f405ef66ff.zip
cpython-981aa46dce926ce54ec1a2adbb73d1f405ef66ff.tar.gz
cpython-981aa46dce926ce54ec1a2adbb73d1f405ef66ff.tar.bz2
closes bpo-34400: Fix undefined behavior in parsetok(). (GH-4439)
Avoid undefined pointer arithmetic with NULL. (cherry picked from commit 7c4ab2afb17b99eb3f61f9c73cbd548b5e0ad2c0) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2018-08-14-03-52-43.bpo-34400.AJD0bz.rst1
-rw-r--r--Parser/parsetok.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-08-14-03-52-43.bpo-34400.AJD0bz.rst b/Misc/NEWS.d/next/Core and Builtins/2018-08-14-03-52-43.bpo-34400.AJD0bz.rst
new file mode 100644
index 0000000..768f5a2
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2018-08-14-03-52-43.bpo-34400.AJD0bz.rst
@@ -0,0 +1 @@
+Fix undefined behavior in parsetok.c. Patch by Zackery Spytz.
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 00d741d..b9c9fe8 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -225,7 +225,7 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
}
else
started = 1;
- len = b - a; /* XXX this may compute NULL - NULL */
+ len = (a != NULL && b != NULL) ? b - a : 0;
str = (char *) PyObject_MALLOC(len + 1);
if (str == NULL) {
err_ret->error = E_NOMEM;