summaryrefslogtreecommitdiff
path: root/src/common/util.h
AgeCommit message (Collapse)Author
2011-06-14Make ControlSocketsGroupWritable work with User.Jérémy Bobbio
Original message from bug3393: check_private_dir() to ensure that ControlSocketsGroupWritable is safe to use. Unfortunately, check_private_dir() only checks against the currently running user… which can be root until privileges are dropped to the user and group configured by the User config option. The attached patch fixes the issue by adding a new effective_user argument to check_private_dir() and updating the callers. It might not be the best way to fix the issue, but it did in my tests. (Code by lunar; changelog by nickm)
2011-05-30whitespace fixesNick Mathewson
2011-05-23Use a 64-bit type to hold sockets on win64.Nick Mathewson
On win64, sockets are of type UINT_PTR; on win32 they're u_int; elsewhere they're int. The correct windows way to check a socket for being set is to compare it with INVALID_SOCKET; elsewhere you see if it is negative. On Libevent 2, all callbacks take sockets as evutil_socket_t; we've been passing them int. This patch should fix compilation and correctness when built for 64-bit windows. Fixes bug 3270.
2011-05-15Add a new flag to check_private_dir to make it _not_ change permissionsNick Mathewson
We'll need this for checking permissions on the directories that hold control sockets: if somebody says "ControlSocket ~/foo", it would be pretty rude to do a chmod 700 on their homedir.
2011-05-15Make check_private_dir accept g+rx dirs if told to do so.Nick Mathewson
2011-05-11Merge remote-tracking branch 'public/3122_memcmp_squashed' into ↵Nick Mathewson
bug3122_memcmp_022 Conflicts throughout. All resolved in favor of taking HEAD and adding tor_mem* or fast_mem* ops as appropriate. src/common/Makefile.am src/or/circuitbuild.c src/or/directory.c src/or/dirserv.c src/or/dirvote.c src/or/networkstatus.c src/or/rendclient.c src/or/rendservice.c src/or/router.c src/or/routerlist.c src/or/routerparse.c src/or/test.c
2011-05-11Hand-conversion and audit phase of memcmp transitionNick Mathewson
Here I looked at the results of the automated conversion and cleaned them up as follows: If there was a tor_memcmp or tor_memeq that was in fact "safe"[*] I changed it to a fast_memcmp or fast_memeq. Otherwise if there was a tor_memcmp that could turn into a tor_memneq or tor_memeq, I converted it. This wants close attention. [*] I'm erring on the side of caution here, and leaving some things as tor_memcmp that could in my opinion use the data-dependent fast_memcmp variant.
2011-05-11Add a "di_ops.h" include to util.hNick Mathewson
2011-03-25Remove the "fuzzy time" codeNick Mathewson
It was the start of a neat idea, but it only got used in 3 places, none of which really needed it.
2011-01-03Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2Nick Mathewson
Conflicts: src/common/test.h src/or/test.c
2011-01-03Bump copyright statements to 2011Nick Mathewson
2010-09-21New function to load windows system librariesNick Mathewson
This function uses GetSystemDirectory() to make sure we load the version of the library from c:\windows\system32 (or local equivalent) rather than whatever version lives in the cwd.
2010-09-14Add a simple integer-ceiling-division macro before we get it wrongNick Mathewson
2010-08-31Fix some issues in rate-limiting noticed by SebastianNick Mathewson
2010-08-18Add a generic rate-limited log mechanism, and use it in a few placesNick Mathewson
Incidentally fixes bug 1042.
2010-02-27Merge remote branch 'origin/maint-0.2.1'Nick Mathewson
Conflicts: src/common/test.h src/or/test.c
2010-02-27Update Tor Project copyright yearsNick Mathewson
2009-12-17Refactor out the 'find string at start of any line' logic.Nick Mathewson
We do this in too many places throughout the code; it's time to start clamping down. Also, refactor Karsten's patch to use strchr-then-strndup, rather than malloc-then-strlcpy-then-strchr-then-clear.
2009-12-15Refactor a bit so that it is safe to include math.h, and mostly not needed.Nick Mathewson
2009-10-15Code to generate, store, and parse microdescriptors and consensuses.Nick Mathewson
The consensus documents are not signed properly, not served, and not exchanged yet.
2009-09-20Add a couple of time helper functions.Mike Perry
Also add rounding support to tv_mdiff().
2009-08-31Revise parsing of time and memory units to handle spaces.Nick Mathewson
When we added support for fractional units (like 1.5 MB) I broke support for giving units with no space (like 2MB). This patch should fix that. It also adds a propoer tor_parse_double(). Fix for bug 1076. Bugfix on 0.2.2.1-alpha.
2009-07-27Fix dirreq and cell stats on 32-bit architectures.Karsten Loesing
When determining how long directory requests take or how long cells spend in queues, we were comparing timestamps on microsecond detail only to convert results to second or millisecond detail later on. But on 32-bit architectures this means that 2^31 microseconds only cover time differences of up to 36 minutes. Instead, compare timestamps on millisecond detail.
2009-07-13Two tweaks to exit-port statistics.Karsten Loesing
Add two functions for round_to_next_multiple_of() for uint32_t and uint64_t. Avoid division in every step of the loop over all ports.
2009-05-27Merge commit 'origin/maint-0.2.1'Nick Mathewson
2009-05-27Spell-check Tor.Nick Mathewson
2009-05-04Update copyright to 2009.Karsten Loesing
2009-05-02Update copyright to 2009.Karsten Loesing
2009-04-29Command-line option to dump SHA1 digests of all source files.Nick Mathewson
Now, when you call tor --digests, it dumps the SHA1 digest of each source file that Tor was built with. We support both 'sha1sum' and 'openssl sha1'. If the user is building from a tarball and they haven't edited anything, they don't need any program that calculates SHA1. If they _have_ modified a file but they don't have a program to calculate SHA1, we try to build so we do not output digests.
2009-03-03Add a simple locale-independent no-surprises sscanf replacement.Nick Mathewson
tor_sscanf() only handles %u and %s for now, which will make it adequate to replace sscanf() for date/time/IP parsing. We want this to prevent attackers from constructing weirdly formed descriptors, cells, addresses, HTTP responses, etc, that validate under some locales but not others. svn:r18760
2009-01-04Remove svn $Id$s from our source, and remove tor --version --version.Nick Mathewson
The subversion $Id$ fields made every commit force a rebuild of whatever file got committed. They were not actually useful for telling the version of Tor files in the wild. svn:r17867
2008-12-29Use a consistent naming standard for header file guard macros, taking care ↵Nick Mathewson
not to collide with any system headers. This tripped us up on Android. svn:r17805
2008-12-19Expose hex_decode_digit from util.cNick Mathewson
svn:r17706
2008-12-18Replace calls to time(NULL) that occur on the order of once per read, one ↵Nick Mathewson
per write, or once per cell with calls to a function that looks at a cached value of time. This is tricksy to benchmark, since it will only help on systems where time() is a syscall and syscalls are relatively slow. svn:r17690
2008-12-11Remove some cargo-cult gcc hacks around tor_assert and predict_unlikely; ↵Nick Mathewson
instead, use the standard convert-to-boolean hack of "svn st" svn:r17597
2008-11-05make read_all and write_all return ssize_t.Nick Mathewson
svn:r17194
2008-11-03Add a new memcmpstart to use instead of strcmpstart when the thing we are ↵Nick Mathewson
comparing is not nul-terminated. svn:r17187
2008-10-27Document some dmalloc stuff and some stupid C tricks.Nick Mathewson
svn:r17161
2008-07-25 r17358@pc-10-8-1-079: nickm | 2008-07-25 16:41:03 +0200Nick Mathewson
Split out the address manipulation functions from compat and util: they were about 21% of the total of those, and spread out too much. svn:r16208
2008-07-24 r17346@aud-055: nickm | 2008-07-24 15:37:19 +0200Nick Mathewson
Make generic address manipulation functions work better. Switch address policy code to use tor_addr_t, so it can handle IPv6. That is a good place to start. svn:r16178
2008-02-21 r14373@tombo: nickm | 2008-02-21 16:29:18 -0500Nick Mathewson
Apply warnings about implicit 64-to-32 conversions; some from Sebastian Hahn; some not. svn:r13664
2008-02-21 r18336@catbus: nickm | 2008-02-21 09:33:15 -0500Nick Mathewson
Patch from Sebastian Hahn: remove obsolete timeval manipulation functions. svn:r13653
2008-02-15 r14185@tombo: nickm | 2008-02-15 18:05:54 -0500Nick Mathewson
Replace the hefty tor_strpartition with a simple function to replace its only (trivial) use. svn:r13532
2008-02-07Update some copyright notices: it is now 2008.Nick Mathewson
svn:r13412
2008-01-06 r17472@catbus: nickm | 2008-01-05 22:10:19 -0500Nick Mathewson
Another test for the increasingly bad check-spaces style checker to check: #else\n#if is almost a sure sign of a failure to use #elif. Fortunately, we only did that 3 times. svn:r13039
2008-01-02 r15786@tombo: nickm | 2008-01-02 01:11:51 -0500Nick Mathewson
Push the strdups used for parsing configuration lines into parse_line_from_string(). This will make it easier to parse more complex value formats, which in turn will help fix bug 557 svn:r13020
2007-12-26 r15691@tombo: nickm | 2007-12-25 18:13:54 -0500Nick Mathewson
New, slightly esoteric function, tor_malloc_roundup(). While tor_malloc(x) allocates x bytes, tor_malloc_roundup(&x) allocates the same size of chunk it would use to store x bytes, and sets x to the usable size of that chunk. svn:r12981
2007-12-12clean up copyrights, and assign 2007 copyrights to The Tor Project, IncRoger Dingledine
svn:r12786
2007-10-30 r16279@catbus: nickm | 2007-10-30 11:14:29 -0400Nick Mathewson
Improved skew reporting: "You are 365 days in the duture" is more useful than "You are 525600 minutes in the future". Also, when we get something that proves we are at least an hour in the past, tell the controller "CLOCK_SKEW MIN_SKEW=-3600" rather than just "CLOCK_SKEW" svn:r12283
2007-09-08 r14359@Kushana: nickm | 2007-09-08 15:07:17 -0400Nick Mathewson
Add some generic skew-and-tolerance functions so we can handle time more sanely. svn:r11406