mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
Actually add HowToReview.txt
This commit is contained in:
parent
609c1e8870
commit
2929986049
85
doc/HACKING/HowToReview.txt
Normal file
85
doc/HACKING/HowToReview.txt
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
How to review a patch
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some folks have said that they'd like to review patches more often, but they
|
||||||
|
don't know how.
|
||||||
|
|
||||||
|
So, here are a bunch of things to check for when reviewing a patch!
|
||||||
|
|
||||||
|
Note that if you can't do every one of these, that doesn't mean you can't do
|
||||||
|
a good review! Just make it clear what you checked for and what you didn't.
|
||||||
|
|
||||||
|
|
||||||
|
Top-level smell-checks
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
(Difficulty: easy)
|
||||||
|
|
||||||
|
Does it compile with --enable-gcc-warnings?
|
||||||
|
|
||||||
|
Does 'make check-spaces' pass?
|
||||||
|
|
||||||
|
Does it have a reasonable amount of tests? Do they pass? Do they leak
|
||||||
|
memory?
|
||||||
|
|
||||||
|
Do all the new functions, global variables, types, and structure members have
|
||||||
|
documentation?
|
||||||
|
|
||||||
|
Do all the the functions, global variables, types, and structure members with
|
||||||
|
modified behavior have modified documentation?
|
||||||
|
|
||||||
|
Do all the new torrc options have documentation?
|
||||||
|
|
||||||
|
If this changes Tor's behavior on the wire, is there a design proposal?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Let's look at the code!
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Does the code conform to CodingStandards.txt?
|
||||||
|
|
||||||
|
Does the code leak memory?
|
||||||
|
|
||||||
|
If two or more pointers ever point to the same object, is it clear which
|
||||||
|
pointer "owns" the object?
|
||||||
|
|
||||||
|
Are all allocated resources freed?
|
||||||
|
|
||||||
|
Are all pointers that should be const, const?
|
||||||
|
|
||||||
|
Are #defines used for 'magic' numbers?
|
||||||
|
|
||||||
|
Can you understand what the code is trying to do?
|
||||||
|
|
||||||
|
Can you convince yourself that the code really does that?
|
||||||
|
|
||||||
|
Is there duplicated code that could be turned into a function?
|
||||||
|
|
||||||
|
|
||||||
|
Let's look at the documentation!
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Does the documentation confirm to CodingStandards.txt?
|
||||||
|
|
||||||
|
Does it make sense?
|
||||||
|
|
||||||
|
Can you predict what the function will do from its documentation?
|
||||||
|
|
||||||
|
|
||||||
|
Let's think about security!
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
If there are any arrays, buffers, are you 100% sure that they cannot
|
||||||
|
overflow?
|
||||||
|
|
||||||
|
If there is any integer math, can it overflow or underflow?
|
||||||
|
|
||||||
|
If there are any allocations, are you sure there are corresponding
|
||||||
|
deallocations?
|
||||||
|
|
||||||
|
Is there a safer pattern that could be used in any case?
|
||||||
|
|
||||||
|
Have they used one of the Forbidden Functions?
|
||||||
|
|
||||||
|
(Also see your favorite secure C programming guides.)
|
Loading…
Reference in New Issue
Block a user