[tor-dev] Call for testing/review: obfsclient

Fabian Keil freebsd-listen at fabiankeil.de
Fri Feb 14 15:43:00 UTC 2014


Yawning Angel <yawning at schwanenlied.me> wrote:

> On Fri, 14 Feb 2014 12:00:40 +0100
> Fabian Keil <freebsd-listen at fabiankeil.de> wrote:
 
> > > Please let me know if it's still broken/if I've missed anything.
> > from /home/fk/git/obfsclient/src/main.cc:49: /home/fk/git/obfsclient/src/schwanenlied/pt/scramblesuit/client.h:146:60:
> > error: implicit instantiation of undefined template
> > 'std::__1::array<unsigned char, 1448>' ::std::array<uint8_t,
> > kHeaderLength + kMaxPayloadLength> decode_buf_;
> > ^ /usr/include/c++/v1/__tuple:69:60: note: template is declared here
> > template <class _Tp, size_t _Size> struct _LIBCPP_TYPE_VIS array; ^
> 
> This should also be fixed, left out #include <array> in
> scramblesuit/client.h.

I can confirm that, thanks.

> > In file included from /home/fk/git/obfsclient/src/main.cc:49:
> > /home/fk/git/obfsclient/src/schwanenlied/pt/scramblesuit/client.h:64:14:
> > error: static_cast from 'schwanenlied::pt::scramblesuit::Client *' to
> > 'Socks5Server::Session *' is not allowed return
> > static_cast<Socks5Server::Session*>(new Client(base, sock, addr,
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2
> > errors generated. *** Error code 1 [...]
> 
> Argh.  Ok, I think I know what the issue is, although it builds fine
> with: 
> 
> somme :: Development/obfsclient/build ‹master*› % clang --version
> clang version 3.4 (tags/RELEASE_34/final)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> 
> Please try the attached patch and let me know if it's *still* broken.

It's already fixed in 1e25c55ba54 without the patch.
 
> On a side note, tip of tree requires updating liballium since I
> switched both of liballium and obfsclient to auto[conf/make]/libtool.
> Hopefully the build process is less rage inducing now.

It is for me. With the attached patches it builds on FreeBSD.

The "#if 0" patch is just FYI, I'm sure a better solution is
possible, but it wasn't immediately obvious to me what the
pragmas are good for.

./obfsclient_test dumps core:

fk at porttest /home/fk/obfsclient $./obfsclient_test
Running main() from gtest_main.cc
[==========] Running 29 tests from 7 test cases.
[----------] Global test environment set-up.
[----------] 3 tests from CryptoUtilsTest
[ RUN      ] CryptoUtilsTest.memwipe
[       OK ] CryptoUtilsTest.memwipe (0 ms)
[ RUN      ] CryptoUtilsTest.memequalsIsEqual
[       OK ] CryptoUtilsTest.memequalsIsEqual (0 ms)
[ RUN      ] CryptoUtilsTest.memequalsNotEqual
[       OK ] CryptoUtilsTest.memequalsNotEqual (0 ms)
[----------] 3 tests from CryptoUtilsTest (1 ms total)

[----------] 1 test from UniformDHTest
[ RUN      ] UniformDHTest.SmokeTest
[       OK ] UniformDHTest.SmokeTest (22100 ms)
[----------] 1 test from UniformDHTest (22100 ms total)

[----------] 3 tests from Sha256Test
[ RUN      ] Sha256Test.NIST_NSRL_abc
[       OK ] Sha256Test.NIST_NSRL_abc (1 ms)
[ RUN      ] Sha256Test.NIST_NSRL_abc_dot_dot_dot
[       OK ] Sha256Test.NIST_NSRL_abc_dot_dot_dot (0 ms)
[ RUN      ] Sha256Test.NIST_NSRL_omgLotsOfAs
[       OK ] Sha256Test.NIST_NSRL_omgLotsOfAs (8 ms)
[----------] 3 tests from Sha256Test (9 ms total)

[----------] 7 tests from HmacSha256Test
[ RUN      ] HmacSha256Test.RFC4231_Case_1
[       OK ] HmacSha256Test.RFC4231_Case_1 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_2
[       OK ] HmacSha256Test.RFC4231_Case_2 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_3
[       OK ] HmacSha256Test.RFC4231_Case_3 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_4
[       OK ] HmacSha256Test.RFC4231_Case_4 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_5
[       OK ] HmacSha256Test.RFC4231_Case_5 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_6
[       OK ] HmacSha256Test.RFC4231_Case_6 (0 ms)
[ RUN      ] HmacSha256Test.RFC4231_Case_7
[       OK ] HmacSha256Test.RFC4231_Case_7 (0 ms)
[----------] 7 tests from HmacSha256Test (0 ms total)

[----------] 3 tests from HkdfSha256Test
[ RUN      ] HkdfSha256Test.RFC5968_Case_1
[       OK ] HkdfSha256Test.RFC5968_Case_1 (0 ms)
[ RUN      ] HkdfSha256Test.RFC5968_Case_2
[       OK ] HkdfSha256Test.RFC5968_Case_2 (0 ms)
[ RUN      ] HkdfSha256Test.RFC5968_Case_3
[       OK ] HkdfSha256Test.RFC5968_Case_3 (0 ms)
[----------] 3 tests from HkdfSha256Test (1 ms total)

[----------] 6 tests from Base32Test
[ RUN      ] Base32Test.RFC4648_Test_1
[       OK ] Base32Test.RFC4648_Test_1 (0 ms)
[ RUN      ] Base32Test.RFC4648_Test_2
[       OK ] Base32Test.RFC4648_Test_2 (0 ms)
[ RUN      ] Base32Test.RFC4648_Test_3
[       OK ] Base32Test.RFC4648_Test_3 (0 ms)
[ RUN      ] Base32Test.RFC4648_Test_4
[       OK ] Base32Test.RFC4648_Test_4 (0 ms)
[ RUN      ] Base32Test.RFC4648_Test_5
[       OK ] Base32Test.RFC4648_Test_5 (0 ms)
[ RUN      ] Base32Test.RFC4648_Test_6
[       OK ] Base32Test.RFC4648_Test_6 (0 ms)
[----------] 6 tests from Base32Test (0 ms total)

[----------] 6 tests from AesTest
[ RUN      ] AesTest.CtrAes128_SP800_38A
Bus error (core dumped)

fk at r500 ~/git/obfsclient $gdb762 obfsclient_test obfsclient_test.core
[...]
Core was generated by `obfsclient_test'.
Program terminated with signal 10, Bus error.
#0  0x00000000004090c6 in schwanenlied::crypto::Ctr<schwanenlied::crypto::AesEcb<&EVP_aes_128_ecb, 16ul> >::process (this=0x7fffffffd4f8, 
    buf=0x433c31 <schwanenlied::crypto::AesTest_CtrAes128_SP800_38A_Test::TestBody()::vectors+1> "\301\276\342.@\237\226\351=~\021s\223\027*\207Ma\221\266 \343&\033\357hd\231\r\266\316\256-\212W\036\003\254\234\236\267o\254E\257\216Q\230\006\366kyp\375\377\206\027\030{\271\377\375\377\060\310\034F\243\\\344\021\345\373\301\031\032\nR\357Z\344\337>\333\325\323^[O\t\002\r\260>\253\366\237$E\337O\233\027\255+A{\346l7\020\036\003\035\332/\276\003\321y!p\240\363", len=<optimized out>, out=<optimized out>) at ./src/schwanenlied/crypto/ctr.h:165
165	      *out++ = (*buf++)^ block_[offset_];
(gdb) p offset_
$1 = 11330806256049838041

I didn't look into this or test obfsclient yet, but intend
to do so in the next couple of days.

Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: obfsclient-patches.diff
Type: text/x-patch
Size: 2237 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20140214/0a6b15c9/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: liballium-patches.diff
Type: text/x-patch
Size: 2500 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20140214/0a6b15c9/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20140214/0a6b15c9/attachment-0001.sig>


More information about the tor-dev mailing list