<div dir="auto"><div>Those are all bu<br><div class="gmail_extra"><br><div class="gmail_quote">On Apr 27, 2017 8:00 AM, "David Chisnall" <<a href="mailto:David.Chisnall@cl.cam.ac.uk">David.Chisnall@cl.cam.ac.uk</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text">On 26 Apr 2017, at 20:26, Demi Marie Obenour via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
><br>
> LLDB currently uses a client-server architecture.  That appears fine,<br>
> but runs into an annoying security problem: other users on the same<br>
> machine can connect to the TCP socket and take over LLDB and thus the<br>
> user’s system.  This means that LLDB is useless in multiuser<br>
> enviromnents on Linux, such as academic computer labs.<br>
><br>
> The immediate problem can be solved by using either HMAC authentication<br>
> of all messages or by using Unix domain sockets.  However, it might be<br>
> simpler to use a 3rd party library for the purpose:<br>
> <a href="https://github.com/DemiMarie/SlipRock" rel="noreferrer" target="_blank">https://github.com/DemiMarie/<wbr>SlipRock</a> (Disclaimer: I wrote SlipRock).<br>
><br>
> Questions:<br>
><br>
> - Would you be interested in using SlipRock?<br>
<br>
</div>A cursory glance at SlipRock raises a few concerns:<br>
<br>
- It depends on libsodium (I like libsodium, but it adds another external dependency).<br></blockquote></div></div></div><div dir="auto">I plan on removing this dependency by copying the code.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- It doesn’t appear to have been tested on non-Linux *NIX systems (LLDB is the default debugger on macOS / iOS, is about to be on FreeBSD, and is used on NetBSD, OpenBSD and Solaris).  I include build testing in this, as the build system only looks for sodium.h in the default location on Linux.<br></blockquote></div></div></div><div dir="auto">Do you know of any ways I can do CI on those systems?  That it fails to build on any *nix platform (with libsodium installed) is a bug.  I am working on improving the CMake build system to help with that.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- The Windows support is not yet done (at least, there’s no tick in the ‘compiles on Windows’ status item).<br></blockquote></div></div></div><div dir="auto">I plan on doing a refactoring that should make that much easier.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">- Attempting to compile it on FreeBSD gives 9 warnings and 8 errors, with several warnings referring to playing fast and loose with pointer aliasing rules.  This makes me very nervous in code that’s intended for security.<br></blockquote></div></div></div><div dir="auto">Not following the pointer aliasing rules is definitely a bug.  Would you mind posting the log?</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- It uses assert() instead of real error handling, which is inappropriate in a library, and requires that the file be compiled without -DNDEBUG, which makes it annoying to integrate into other build systems.<br></blockquote></div></div></div><div dir="auto">That’s certainly a bug.  I will fix it.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- The APIs appear to be entirely undocumented.<br></blockquote></div></div></div><div dir="auto">The documentation is in sliprock.h, but the fact that that is not easy to find is a bug.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
- The error handling does not match the lexical scoping and so is very difficult a to follow (and therefore potentially error prone).  I was unable to run the static analyser on the code because it doesn’t compile on FreeBSD or macOS.<br></blockquote></div></div></div><div dir="auto">That’s definitely a bug, at least in my opinion.  SlipRock should be very easy to follow.  I was inspired by the Linux kernel’s “goto fail” but obviously things didn’t work as expected.</div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<font color="#888888"><br>
David</font></blockquote></div></div></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><font color="#888888"><br>
</font></blockquote></div>Thanks,</div><div class="gmail_extra" dir="auto"><br></div><div class="gmail_extra" dir="auto">Demi</div></div></div>