| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
continuation of 79d832c37
|
|
|
|
|
|
|
| |
ref. https://todo.sr.ht/~bptato/chawan/23
TODO: I'm not quite sure *why* it's getting called. curls operate in
mysterious ways.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* add some more env vars to makefile
* remove fpermissive from GCC builds
* update Monoucha
* fix borked seccomp filter length safety check (ugh)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* add restrictions on clone for buffer filter
- hardcoded it for musl, glibc and bionic. hopefully they don't
change it too soon...
* remove define directive from gen_syscalls
- now the arch nr check is hardcoded in gen_defs. makes things a
bit less complex.
* fix borked mprotect filter on bionic
- this completely broke the browser.
|
|
|
|
|
|
|
|
|
| |
* abort on network sandbox violation - it's probably better not to, but
I want to think this through a bit more before changing it for good
(and then do it consistently, i.e. also for the buffer process.)
* revert case variable quoting - the lack of field splitting is
specified by POSIX, and the readme states that we target POSIX. no
need to be paranoid about imaginary shells.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* fix matching on unstripped whitespace: caught after upgrading to
upstream dash & chaseccomp wouldn't compile
* add defines to ensure that we computed the filter length correctly
* inline cut_label
* EPERM on sigaction, sigprocmask, gettid, and kill on tgkill (so a
crash doesn't trigger sandbox violations)
* move SIGSYS handler to C and add one for the network
The last change removes the stack trace from SIGSYS, but gives us the
syscall number which is probably more useful. (Indeed, we don't even
have a stack trace in release builds.)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This drops libseccomp as a dependency.
Also, move the capsicum/pledge definitions from bindings to sandbox.nim
because they are only used there.
Interestingly, after integrating chaseccomp I found that the
stbi process would mysteriously crash by a getrandom(2) syscall.
Closer investigation revealed it is only called on the initialization
of glibc's malloc; presumably it had never surfaced before because
libseccomp would always allocate before entering the sandbox.
So I've added getrandom to our filter as well.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Now we use QuickJS-NG, which is better maintained than QJS and has
column tracking.
|
|
|
|
| |
I meant to fix this enum bug in the previous patch but then I forgot...
|
|
|
|
|
|
|
|
|
|
|
|
| |
* add document.forms
* add form.elements
* remove redundant jshasprop functions
* use mpairs for attribute iteration (mpairs use pointers, but pairs
copies)
* fix remove() crash
* fix remove() collection invalidation for children (if parent is not
in the collection)
* update monoucha
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* add responseText, response
* add net tests
-> currently sync XHR only; should find a way to do async
tests...
* update monoucha
-> simplified & updated some related code that no longer worked
properly
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
* simplify processData
* set document charset on creation
* update chagashi
|
| |
|
|
|
|
| |
Operation "modularize Chawan somewhat" part 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a minefield.
Intuitively, you would think that just clearing the opaque and manually
freeing registered object should be enough. Unfortunately, this is
not true; we do not store whether we are actually holding a reference to
registered JS objects, so this approach leads to double frees.
Instead, we add a QJS callback that is called right after the final
GC cleanup, but before the list_free assertion. This way, we can be sure
that any object still in our registry is referenced by us, and can
therefore unreference them safely.
|
| |
|
|
|
|
|
| |
- simplify `JS_IsArray` for proxy chains
- remove `js_proxy_isArray`
|
|
|
|
|
|
| |
* add `JS_StrictEq()`, `JS_SameValue()`, and `JS_SameValueZero()` all accepting `JSValueConst`
* make `js_strict_eq` accept `JSValueConst`, remove uses of this function internally and replace them with
`js_strict_eq2` instead.
|
|
|
|
|
|
| |
* Expose `JS_SetUncatchableError()`
* Remove unnecessary `JS_SetUncatchableError` declaration
|
| |
|
| |
|
|
|
|
| |
taking it from upstream
|
| |
|
|
|
|
|
|
| |
- accept `class P { async = 1 }}`
- accept `class P { static = 1 }}` etc.
- Fixes #261
|
|
|
|
| |
Co-authored-by: Richard Davison <ridaviso@amazon.com>
|
|
|
|
|
|
|
|
| |
- move all `lre_xxx` functions to libunicode
- use flags table `lre_ctype_bits` instead of bitmaps
- simplify `lre_is_space`, `lre_js_is_ident_first` and `lre_js_is_ident_next`
- simplify `simple_next_token`, handle UTF-8 correctly
- simplify `is_let`, remove dead code
|
|
|
|
|
|
|
|
| |
- Document table and index formats
- Add size statistics
- Fix UBSAN issue in `get_le24()`
Fixes #285
|