HN user

frewsxcv

1,403 karma
Posts16
Comments189
View on HN
github.com 9y ago

Show HN: Alert-after: Utility to get a desktop alert after a command finishes

frewsxcv
5pts3
www.unicode.org 9y ago

Adopted Unicode Characters

frewsxcv
1pts0
blog.servo.org 10y ago

These Weeks in Servo 48: Windows support!

frewsxcv
13pts0
www.google.com 10y ago

Google chooses artwork for Mountain View self-driving cars

frewsxcv
11pts2
github.com 11y ago

Show HN: rust-geojson – Library for serializing the GeoJSON vector GIS format

frewsxcv
2pts0
github.com 11y ago

Show HN: rust-rss – library for serializing the RSS web content format

frewsxcv
35pts13
github.com 11y ago

Show HN: Rust-chunked-transfer – Encoder/decoder for HTTP chunked transfers

frewsxcv
6pts0
github.com 11y ago

Show HN: Graphosaurus – 3D graph viewer written entirely in JavaScript powered by WebGL

frewsxcv
12pts1
alexgaynor.net 11y ago

The State of the News and TLS

frewsxcv
5pts0
creativecommons.org 12y ago

CC’s Next Generation Licenses — Welcome Version 4.0

frewsxcv
6pts0
www.reddit.com 12y ago

Ladar Levison (Lavabit operator) vs. Moxie Marlinspike

frewsxcv
5pts0
i.imgur.com 12y ago

Fox Business: "The GitHub dictionary"

frewsxcv
13pts5
plus.google.com 13y ago

Douglas Crockford's thoughts on software patents

frewsxcv
1pts0
www.mv-voice.com 13y ago

Hacker Dojo ditching problematic building

frewsxcv
10pts0
techcrunch.com 13y ago

Education startup Educreations Raises $2.2M From Accel, NewSchools

frewsxcv
2pts0
github.com 14y ago

Khan Academy / John Resig release source for new Canvas presentation tool

frewsxcv
3pts0

The unions require a certain amount of work experience to join and some have different levels of membership depending on how much work you do after joining.

To users who are following along who aren't familiar, this is not how all unions works. Presumably the commenter is talking about "trade unions" which is one of many types of unions.

If something is untyped in Sorbet, you can give it a type with `T.let`. So if the return value of function `foo` is untyped, but you have a high degree of confidence that it will return a `String`, you can do `ret = T.let(foo, String)`

I haven't, though I've thought about it. Most of the logic behind git2-rs (as far as I know) is written in C. While it's possible to run afl.rs on a Rust project that uses C code behind the scenes, I haven't ever attempted to get AFL instrumentation working on the underlying C code. I don't think it should be that difficult, I just haven't gotten around to it yet.

EDIT: I forgot to mention: It's possible to run AFL on uninstrumented code, it just won't be that smart about finding new code paths.

(afl.rs maintainer here)

I ran AFL on rust-brotli for a week a couple weeks ago. It didn't find anything. I plan to try again soon! No one is safe from AFL.

This is what I'm striving for:

    #[fuzz]
    fn test_fuzz(bytes: Vec<u8>) {
        ...
    }
This would live alongside other test cases and everytime fuzzing is desired, one could just do `cargo fuzz`. Relevant issues and a pull request:

https://github.com/frewsxcv/afl.rs/issues/24 https://github.com/frewsxcv/afl.rs/issues/31 https://github.com/frewsxcv/afl.rs/pull/46

There's still a little more work to do though. Mainly, I want to compile AFL as a part of the workflow (see the afl-sys crate in the repo) so the user doesn't need to manually install AFL to use `cargo fuzz`.

Regarding using stable builds of Rust with afl.rs: If I could, I would.

afl.rs uses a Rust compiler plugin to register the LLVM pass needed to instrument Rust programs so that AFL can run on them:

https://github.com/frewsxcv/afl.rs/blob/master/afl-plugin/li...

Compiler plugins in Rust are currently unstable, and as far as I know, are not on a path to stability in the near-term.

https://doc.rust-lang.org/book/compiler-plugins.html

Author here.

AFL is coverage-guided fuzz testing (fuzz testing that relies on code coverage).

Someone (not me) wrote an "LLVM pass" that loops through the generated LLVM IR for any LLVM-compiled program and injects the necessary AFL instrumentation such that AFL can work on it:

https://github.com/mirrorer/afl/blob/master/llvm_mode/afl-ll...

Since Rust uses LLVM when compiling a binary, all afl.rs does is incorporate this instrumentation and AFL just needs to be run on the resulting binary.

There are multiple versions of LLVM though. Rust is compiled using a specific version of LLVM. Since the LLVM pass above is reading the generated LLVM that Rust produces, the versions can't be too far off otherwise the LLVM pass might see some unrecognized symbols.

The README in the project suggests just compiling Rust which also compiles LLVM, then you'll have a version of LLVM that is guaranteed to be the same when you setup the instrumentation.

I think it might be sufficient to update the documentation to suggest the user of afl.rs just download and use LLVM 3.8 since this is the major version that Rust uses internally. I need to do more testing to confirm this will work for everyone, then I can update (and greatly simplify) the README.