summaryrefslogtreecommitdiff
path: root/Meta
AgeCommit message (Collapse)Author
2020-11-30Lagom/Fuzzers: Add URL fuzzerLuke
2020-11-29Meta: Add GitHub Actions workflow for Lagom with FuzzersLuke
There are cases where Lagom will build with GCC but not Clang. This often goes unnoticed for a while as we don't often build with Clang. However, this is now important to test in CI because of the OSS-Fuzz integration. Note that this only tests the build, it does not run any tests. Note that it also only builds LagomCore, Lagom and the fuzzers. It does not build the other programs that use Lagom.
2020-11-29Lagom: Mention OSS-Fuzz in ReadMeNico Weber
We added OSS-Fuzz integration in #4154, but documentation about it is spread across several pull requests, IRC, and issues. Let's collect the important bits in the ReadMe.
2020-11-29Lagom: Add a Shell parser fuzzerAnotherTest
2020-11-29Lagom: Add Regex fuzzersLinus Groh
2020-11-27Lagom: Various fixes to make Lagom run on OSS-Fuzz (#4176)DavidKorczynski
2020-11-27LibRegex: Add a regular expression libraryEmanuel Sprung
This commit is a mix of several commits, squashed into one because the commits before 'Move regex to own Library and fix all the broken stuff' were not fixable in any elegant way. The commits are listed below for "historical" purposes: - AK: Add options/flags and Errors for regular expressions Flags can be provided for any possible flavour by adding a new scoped enum. Handling of flags is done by templated Options class and the overloaded '|' and '&' operators. - AK: Add Lexer for regular expressions The lexer parses the input and extracts tokens needed to parse a regular expression. - AK: Add regex Parser and PosixExtendedParser This patchset adds a abstract parser class that can be derived to implement different parsers. A parser produces bytecode to be executed within the regex matcher. - AK: Add regex matcher This patchset adds an regex matcher based on the principles of the T-REX VM. The bytecode pruduced by the respective Parser is put into the matcher and the VM will recursively execute the bytecode according to the available OpCodes. Possible improvement: the recursion could be replaced by multi threading capabilities. To match a Regular expression, e.g. for the Posix standard regular expression matcher use the following API: ``` Pattern<PosixExtendedParser> pattern("^.*$"); auto result = pattern.match("Well, hello friends!\nHello World!"); // Match whole needle EXPECT(result.count == 1); EXPECT(result.matches.at(0).view.starts_with("Well")); EXPECT(result.matches.at(0).view.end() == "!"); result = pattern.match("Well, hello friends!\nHello World!", PosixFlags::Multiline); // Match line by line EXPECT(result.count == 2); EXPECT(result.matches.at(0).view == "Well, hello friends!"); EXPECT(result.matches.at(1).view == "Hello World!"); EXPECT(pattern.has_match("Well,....")); // Just check if match without a result, which saves some resources. ``` - AK: Rework regex to work with opcodes objects This patchsets reworks the matcher to work on a more structured base. For that an abstract OpCode class and derived classes for the specific OpCodes have been added. The respective opcode logic is contained in each respective execute() method. - AK: Add benchmark for regex - AK: Some optimization in regex for runtime and memory - LibRegex: Move regex to own Library and fix all the broken stuff Now regex works again and grep utility is also in place for testing. This commit also fixes the use of regex.h in C by making `regex_t` an opaque (-ish) type, which makes its behaviour consistent between C and C++ compilers. Previously, <regex.h> would've blown C compilers up, and even if it didn't, would've caused a leak in C code, and not in C++ code (due to the existence of `OwnPtr` inside the struct). To make this whole ordeal easier to deal with (for now), this pulls the definitions of `reg*()` into LibRegex. pros: - The circular dependency between LibC and LibRegex is broken - Eaiser to test (without accidentally pulling in the host's libc!) cons: - Using any of the regex.h functions will require the user to link -lregex - The symbols will be missing from libc, which will be a big surprise down the line (especially with shared libs). Co-Authored-By: Ali Mohammad Pur <ali.mpfard@gmail.com>
2020-11-26Lagom: Rename FuzzBMP to FuzzBMPLoaderNico Weber
2020-11-26Lagom: Make BMP fuzzer look like the other image loader fuzzersNico Weber
2020-11-26Lagom: Add fuzzers for remaining image loaders: ICO, PNG, PBM, PGMNico Weber
2020-11-25Meta: Reduce IRC spamBen Wiederhake
Fixes #4145.
2020-11-25Lagom: Fix FuzzJs buildLinus Groh
This was broken with the JS::Parser::Error position changes, but I don't actually see a reason to do anything with the parser errors here, so let's remove it and consider simply not crashing a success. :^)
2020-11-20Lagom: Add a gif loader fuzzerNico Weber
2020-11-19Lagom: Add a jpg fuzzerNico Weber
2020-11-19Lagom: Make fuzzer cmake less repetitiveNico Weber
2020-11-19Lagom: Add a PPM fuzzerNico Weber
It finds the problem fixed in 69518bd178ebfaa but nothing else.
2020-11-14Meta: Fix IRC notification scriptBen Wiederhake
What a silly mistake. How did I manage to do that?
2020-11-14Meta: Use SerenityBot for IRC notificationsBen Wiederhake
This avoids "useless" join/part notifications.
2020-11-14Lagom: Use -fsanitize=fuzzer, not -fsanitize=fuzzer-no-linkNico Weber
Fuzzers don't link for me without this change.
2020-11-14Lagom: Add a gemini fuzzerNico Weber
Didn't find anything interesting, but might as well check it in.
2020-11-14Lagom: Augment fuzzing readme a bitNico Weber
Recommend using asan, don't set the c compiler (c++ compiler is sufficient), mention how to run on several cores, and how to get less output.
2020-11-13Meta: Nicer IRC notificationsBen Wiederhake
2020-11-12Lagom: Add ntpquery to lagom buildNico Weber
2020-11-10Userland: Add an "adjtime" utilityNico Weber
It's a thin userland wrapper around adjtime(2). It can be used to view current pending time adjustments, and root can use it to smoothly adjust the system time. As far as I can tell, other systems don't have a userland utility for this, but it seems useful. Useful enough that I'm adding it to the lagom build so I can use it on my linux box too :)
2020-11-08Lagom/Fuzzers: Add a Dockerfile for FuzzilliJsLinus Groh
Based on Fedora. This allows building and running FuzzilliJs and Fuzzilli itself in a Docker/Podman container.
2020-11-08Meta: Add script that runs all lintsBen Wiederhake
2020-11-07Documentation: Update required GCC version to >= 10Linus Groh
I initially thought as long as Lagom is not built >= 9 would be fine, but LagomCore is always built for the code generators.
2020-11-07Lagom/Fuzzers: Add Fuzzilli version of FuzzJsLuke
Fuzzilli is a JavaScript engine fuzzer made by googleprojectzero. https://github.com/googleprojectzero/fuzzilli/
2020-11-02Travis: Update host GCC to version 10Linus Groh
This allows us to use the latest C++20 features in programs which we compile and run as part of Lagom.
2020-11-01Meta: lint-shell-scripts: Exit if shellcheck is not installedBrendan Coles
2020-10-30LibTLS: (Almost) verify certificate chain against root CA certificatesAnotherTest
Also adds a very primitive systemwide ca_certs.ini file.
2020-10-29CMake: Use CONFIGURE_DEPENDS in existing globs.asynts
2020-10-20Build: Modify various parts to allow the build to succeed on FreeBSDLaurent Cimon
2020-10-12Toolchain: Upgrade to GCC 10.2.0Andreas Kling
2020-10-03Everywhere: Fix more typosLinus Groh
2020-09-25Meta: Provide script to automatically flag bad formattingBen Wiederhake
2020-09-20Meta: Fix build-root-filesystem.sh on macOSValtteri Koskivuori
2020-09-19Meta: Add env variable SERENITY_RUN to be able to choose qemu, bochs, etcTom
This allows picking for example bochs: SERENITY_RUN=b ninja run
2020-09-16Build: Preserve hard/symbolic links when building root fsAnotherTest
This fixes the issue where there would not be enough space to copy things when at least the git port and the gcc port are installed.
2020-09-14Meta: Include .json files in the Qt Creator refresh scriptAndreas Kling
2020-09-14Meta: Make the text-to-cpp-string thingy pass shellcheckAndreas Kling
2020-09-14Meta: Add helper for generating a C++ string from a text fileAndreas Kling
2020-09-13Userland: Add {md5,sha1,sha256,sha512}sumLinus Groh
2020-09-12Meta: Avoid deprecated qemu optionBen Wiederhake
Apparently "-soundhw pcspk" is deprecated too. However, I don't know which "name" to insert, and I can't test it, hence I didn't touch it.
2020-09-12Meta: Describe how to analyze an LLVM fuzzer crashBen Wiederhake
2020-09-12Meta+LibGfx: Fuzz BMP parsingBen Wiederhake
2020-09-12LibJS: Fix start position of multi-line tokensBen Wiederhake
This broke in case of unterminated regular expressions, causing goofy location numbers, and 'source_location_hint' to eat up all memory: Unexpected token UnterminatedRegexLiteral. Expected statement (line: 2, column: 4294967292)
2020-09-07Meta: Fix shellcheck whines in check-symbols.shAndreas Kling
2020-09-06Travis: Run script that checks for forbidden symbols in LibCItamar
check-symbols.sh fails the build if undefined __cx_guard_* symbols are found in LibC. This will help us catch port breakage sooner.
2020-09-06utmpupdate: Add a program for updating /var/run/utmpAndreas Kling
To keep track of ongoing terminal sessions, we now have a sort-of traditional /var/run/utmp file, like other Unix systems. Unlike other Unix systems however, ours is of course JSON. :^) The /bin/utmpupdate program is used to update the file, which is not writable by regular user accounts. This helper program is set-GID "utmp".