108 lines
2.7 KiB
Markdown
108 lines
2.7 KiB
Markdown
Please feel free to contribute patches; here are the basic guidelines to hack
|
|
along with us!
|
|
|
|
Please work from a git tree by cloning the repo:
|
|
|
|
git clone https://github.com/ioerror/tlsdate.git
|
|
|
|
Please file bugs on the tlsdate issue tracker:
|
|
|
|
https://github.com/ioerror/tlsdate/issues
|
|
|
|
Please use the github pull request feature when possible.
|
|
|
|
The current build status is available as a handy image:
|
|
|
|
[](http://travis-ci.org/ioerror/tlsdate)
|
|
|
|
Continuous integration is available for a number of platforms:
|
|
|
|
https://jenkins.torproject.org/job/tlsdate-ci-linux/
|
|
https://travis-ci.org/ioerror/tlsdate
|
|
http://build.chromium.org/p/chromiumos/waterfall
|
|
|
|
White Space:
|
|
|
|
Spaces only, no tabs; all tabs must die
|
|
No stray spaces at the end of lines
|
|
Generally try not to add excessive empty white space
|
|
|
|
Documentation:
|
|
|
|
Document all functions with doxygen style comments
|
|
|
|
Ensuring Correctness:
|
|
|
|
Test your patches and ensure:
|
|
|
|
No compiler warnings or errors
|
|
No linker warnings or errors
|
|
|
|
Test your improved copy of tlsdate extensively
|
|
|
|
Security:
|
|
|
|
tlsdate is security sensitive - please consider where you add code and in
|
|
what context it will run. When possible, run with the least privilege as is
|
|
possible.
|
|
|
|
Proactively find bugs:
|
|
|
|
Run your copy of tlsdate under valgrind
|
|
|
|
Weird but meaningful conventions are prefered in tlsdate. We prefer attention
|
|
to detail:
|
|
|
|
if ( NULL == foo (void) )
|
|
{
|
|
bar (void);
|
|
}
|
|
|
|
Over quick, hard to read and potentilly incorrect:
|
|
|
|
if (foo(void)==NULL))
|
|
bar();
|
|
|
|
Define magic numbers and explain their origin:
|
|
|
|
// As taken from RFC 3.14
|
|
#define MAGIC_NUMBER 23 // This goes in foo.h
|
|
ptr = malloc (MAGIC_NUMBER);
|
|
|
|
Rather than just throwing them about in code:
|
|
|
|
ptr = malloc (23);
|
|
|
|
It is almost always prefered to use dynamically allocated memory:
|
|
|
|
widget_ptr = malloc (WIDGET_SIZE);
|
|
|
|
Try to avoid static allocations like the following:
|
|
|
|
char widget[WIDGET_SIZE];
|
|
|
|
Try to use unsigned values unless an API requires signed values:
|
|
|
|
uint32_t server_time_s;
|
|
|
|
Please provide relevant CHANGELOG entries for all changes.
|
|
Please remove items from the TODO file as they are completed.
|
|
Please provide unittest cases.
|
|
|
|
When submitting patches via email, please use `git format-patch` to format
|
|
patches:
|
|
|
|
git format-patch 9a61fcba9bebc3fa2d91c9f79306bf316c59cbcc
|
|
|
|
Email patches with a GnuPG signature whenever possible.
|
|
|
|
When applying patches, please use `git am` to apply patches:
|
|
|
|
git am -i 0001-add-TODO-item.patch
|
|
|
|
If `git format-patch` is not possible, please send a unified diff.
|
|
|
|
When in doubt, please consult the Tor HACKING guide:
|
|
|
|
https://gitweb.torproject.org/tor.git/blob/HEAD:/doc/HACKING
|
|
|