GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — bpo-1635741: Fix potential refleaks in binascii module by shihai1991 · Pull Request #18613 · python/cpython Conversation
|
Codecov Report
@@ Coverage Diff @@ ## master #18613 +/- ## ========================================== + Coverage 82.06% 82.13% +0.06% ========================================== Files 1955 1955 Lines 584080 584621 +541 Branches 44458 44484 +26 ========================================== + Hits 479327 480176 +849 + Misses 95124 94794 -330 - Partials 9629 9651 +22
Continue to review full report at Codecov.
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| binascii_clear(PyObject *m) | ||
| { | ||
| binascii_state *state = get_binascii_state(m); | ||
| if (state == NULL) { |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I don't think that state can be NULL. If it's NULL, it's a bug in Python. No? Same remark in binascii_traverse().
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I do some debug in my vm:
Breakpoint 1, binascii_traverse (module=0x7ffff7e803d0, visit=0x4630b6 <bad_traverse_test>, arg=0x0) at /temp/shihai/cpython/Modules/binascii.c:1654
1654 {
(gdb) n
1655 binascii_state *state = get_binascii_state(module);
(gdb) n
1656 if (state == NULL) {
(gdb) n
1657 return -1;
(gdb) p state
$5 = (binascii_state *) 0x0
(gdb) c
Continuing.
Breakpoint 3, binascii_exec (module=0x7ffff7e803d0) at /temp/shihai/cpython/Modules/binascii.c:1615
1615 binascii_exec(PyObject *module) {
What's the reason?
the malloc operation of md_state will be called after first calling binascii_traverse.
https://github.com/python/cpython/blob/master/Objects/moduleobject.c#L399.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| }; | ||
|
|
||
| static int | ||
| binascii_traverse(PyObject *m, visitproc visit, void *arg) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
nitpick: I would prefer to use longer variable name than just "m". Rename "m" to "mod" or "module". Same remark if following functions.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
ok, no probleam, i will update it.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| binascii_traverse(PyObject *m, visitproc visit, void *arg) | ||
| { | ||
| binascii_state *state = get_binascii_state(m); | ||
| if (state == NULL) { |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I will update this behavior soon.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I created https://bugs.python.org/issue39824 to change the md_state==NULL case. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.