David Goulet
43c119fedb
Merge branch 'tor-github/pr/980'
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2019-04-30 11:50:36 -04:00
David Goulet
e543c4e20c
Merge branch 'tor-github/pr/909'
...
Signed-off-by: David Goulet <dgoulet@torproject.org>
2019-04-30 11:17:45 -04:00
Nick Mathewson
48e1ab1720
Changes file for 29732.
2019-04-30 11:11:39 -04:00
Nick Mathewson
730dddc380
Make sure that the rng is not replaced if it is already replaced.
2019-04-30 11:11:39 -04:00
Nick Mathewson
604e849d36
Make the deterministic and reproducible rng test code handle fast_rng
2019-04-30 11:11:39 -04:00
Nick Mathewson
587a525cc5
Add improved debugging support to crypto_rand_fast code.
2019-04-30 11:11:39 -04:00
Nick Mathewson
e66b5153bd
Extract add-entropy code from crypto_fast_rng to a new function
2019-04-30 11:11:39 -04:00
Nick Mathewson
c6a93beed8
Use preloaded-rng code in test_hs_descriptor.c
2019-04-30 11:11:39 -04:00
Nick Mathewson
7086a9f90e
Make rng mock code also cover strongest_rand.
2019-04-30 11:11:39 -04:00
Nick Mathewson
0a9fb6938d
Use prefilled PRNG replacement in test_extorport
...
This is the last remaining place where our tests had mocked
crypto_rand.
2019-04-30 11:11:39 -04:00
Nick Mathewson
7bd34698af
Use prefilled_rng in test_addr.c in place of existing code.
2019-04-30 11:11:39 -04:00
Nick Mathewson
fe173ce0bc
Add a testing PRNG replacement that returns canned data.
2019-04-30 11:11:39 -04:00
Nick Mathewson
64d5ed0415
Update circuit_timeout test to use deterministic prng
2019-04-30 11:11:39 -04:00
Nick Mathewson
d3526d3f2c
Update test_prob_distr to use new reproducible RNG override code
2019-04-30 11:11:39 -04:00
Nick Mathewson
11eaed66bb
Add support for deterministic override of crypto_rand() in tests
...
We had this previously, but we did it differently in different
places. This implementation is pulled from test_prob_distr.c
2019-04-30 11:11:39 -04:00
Nick Mathewson
44e6663b8a
Merge remote-tracking branch 'tor-github/pr/972'
2019-04-29 13:36:35 -04:00
Nick Mathewson
206d28ff15
Merge branch 'maint-0.4.0'
2019-04-29 10:15:11 -04:00
Nick Mathewson
593d29920e
Merge remote-tracking branch 'tor-github/pr/974' into maint-0.4.0
2019-04-29 10:15:03 -04:00
Nick Mathewson
efeb101b96
Merge remote-tracking branch 'tor-github/pr/889'
2019-04-25 20:25:34 -04:00
Nick Mathewson
36b4fc7437
Merge remote-tracking branch 'tor-github/pr/922'
2019-04-25 20:08:39 -04:00
Nick Mathewson
a5cced2b7a
Extract keyword argument checking from argument parsing.
2019-04-25 14:13:03 -04:00
Nick Mathewson
a0299cd240
In control command api, rename "object" to "cmddata"
...
This makes it match control-spec.txt.
2019-04-25 14:13:03 -04:00
Nick Mathewson
3ed7ceeb85
changes file for ticket 30091 (controller parsing refactor)
2019-04-25 14:13:03 -04:00
Nick Mathewson
ff9ba7d6c4
expand CMD_FL_WIPE to wipe the parsed arguments too
2019-04-25 14:13:03 -04:00
Nick Mathewson
88d22b898e
Simplify handler logic in control_cmd.c
...
Now that the legacy handlers are gone, we can simplify the
structures and macros here.
2019-04-25 14:13:03 -04:00
Nick Mathewson
ddd33d39c7
Port the authenticate and authchallenge commands to the new parser
...
These two presented their own challenge, because of their use of
QString, and their distinguished handling of quoted versus
non-quoted values.
2019-04-25 14:13:03 -04:00
Nick Mathewson
8799b4e805
Add rudimentary qstring support to kvline.c
2019-04-25 14:13:03 -04:00
Nick Mathewson
ba05324242
Move and rename decode_escaped_string()
...
This function decodes something different from the usual c-escaped
format.
It is only used in controller authorization.
2019-04-25 14:13:03 -04:00
Nick Mathewson
0c0b869ba4
Use the new controller command parser for EXTENDCIRCUIT.
...
This command does not fit perfectly with the others, since its
second argument is optional and may contain equal signs. Still,
it's probably better to squeeze it into the new metaformat, since
doing so allows us to remove several pieces of the old
command-parsing machinery.
2019-04-25 14:13:03 -04:00
Nick Mathewson
95afdb005c
Use new parser logic for SETCONF/RESETCONF code.
...
Here we get to throw away a LOT of unused code, since most of the
old parsing was redundant with kvline.
2019-04-25 14:13:03 -04:00
Nick Mathewson
d8b3ec865d
Update more controller commands, now that we have kvline support
2019-04-25 14:13:03 -04:00
Nick Mathewson
dab35386ca
Add a case-insensitive variant to config_line_find()
2019-04-25 14:13:03 -04:00
Nick Mathewson
9471391694
Add kvline support to controller command parser.
...
This should let us handle all (or nearly all) of the remaining
commands.
2019-04-25 14:13:03 -04:00
Nick Mathewson
0841a69357
Allow kvlines in control commands.
2019-04-25 14:13:03 -04:00
Nick Mathewson
bb37ad6957
Add fuzzing support for several more groups of kvlines flags
2019-04-25 14:13:03 -04:00
Nick Mathewson
73df91bbb5
kvline: handle empty alues as well as empty keys
...
The two options are mutually exclusive, since otherwise an entry
like "Foo" would be ambiguous. We want to have the ability to treat
entries like this as keys, though, since some controller commands
interpret them as flags.
2019-04-25 14:13:03 -04:00
Nick Mathewson
01b07c548b
Use parsing code for the simpler controller commands.
...
(This should be all of the command that work nicely with positional
arguments only.)
Some of these commands should probably treat extra arguments as
incorrect, but for now I'm trying to be careful not to break
any existing users.
2019-04-25 14:13:03 -04:00
Nick Mathewson
cbd1a7e053
Unit tests for current control-command parser logic
2019-04-25 14:13:03 -04:00
Nick Mathewson
dbfe1a14e4
When parsing a multiline controller command, be careful with linebreaks
...
The first line break in particular was mishandled: it was discarded
if no arguments came before it, which made it impossible to
distinguish arguments from the first line of the body.
To solve this, we need to allocate a copy of the command rather than
using NUL to separate it, since we might have "COMMAND\n" as our input.
Fixes ticket 29984.
2019-04-25 14:13:03 -04:00
Nick Mathewson
f18b7dc473
Extract the argument-splitting part of control.c's parser
...
This is preliminary work for fixing 29984; no behavior has changed.
2019-04-25 14:13:03 -04:00
Nick Mathewson
de70eebc65
Start on a command-parsing tool for controller commands.
...
There _is_ an underlying logic to these commands, but it isn't
wholly uniform, given years of tweaks and changes. Fortunately I
think there is a superset that will work.
This commit adds a parser for some of the most basic cases -- the
ones currently handled by getargs_helper() and some of the
object-taking ones. Soon will come initial tests; then I'll start using
the parser.
After that, I'll expand the parser to handle the other cases that come
up in the controller protocol.
2019-04-25 14:13:03 -04:00
George Kadianakis
974c2674eb
Merge branch 'maint-0.4.0'
2019-04-25 15:47:07 +03:00
George Kadianakis
a39789a02c
Merge branch 'tor-github/pr/960' into maint-0.4.0
2019-04-25 15:46:45 +03:00
George Kadianakis
811a93f803
Merge branch 'tor-github/pr/953'
2019-04-25 15:43:47 +03:00
Nick Mathewson
6320b2988c
Merge remote-tracking branch 'tor-github/pr/942'
2019-04-24 17:06:56 -04:00
Nick Mathewson
0cbe0f9cab
Merge remote-tracking branch 'tor-github/pr/964'
2019-04-24 17:05:20 -04:00
Nick Mathewson
d0a0f3e8cd
Allow do_resolve() to be longer.
2019-04-24 14:15:18 -04:00
David Goulet
f39dd0a700
Merge branch 'tor-github/pr/951'
2019-04-24 09:53:15 -04:00
David Goulet
608cf2ba8d
Merge branch 'tor-github/pr/943'
2019-04-24 09:51:14 -04:00
David Goulet
5bcf87c224
Merge branch 'tor-github/pr/955'
2019-04-24 09:45:32 -04:00