Skip to content

Conversation

@euank
Copy link

@euank euank commented Feb 22, 2018

This PR does a lot because, well, to make the tests not fail due to frankdd certs that expired in late 2017, a lot of stuff was required.

The main point of this PR, however, is the "Correct c-struct 'null' checks" commit.
The use of if not c_struct to check whether something was null didn't work, and so it was fairly easy to end up with memory unsafe behaviour when anything other than the completely happy path was hit in the openssl integration.

cc @SkyLothar

'-a stderr -a stdout' is unneeded since that's the default, and '-i'
already does '-a stdin' so that was redundant.

Setting the entrypoint to empty string was also really weird!
Some of the testcerts expired in 2017, so tests started failing! This
regenerates them with fairly similar certificates.

The script used to generate them is included for regeneration.

Test changes, to use these new certs, follow in the next commit.
This replaces hardcoded certificates with loading them from disk for the
tests.

This allows swapping around certs much more easily.

This also swaps out all expired certs so tests pass again.
In luajit, a null pointer is distinct from nil, and thus "truthy". That
is to say, `if not c_ffi_struct` will never evaluate to true, even if
the struct is null.

However, a null ffi struct does compare equal to nil, so the new
comparison corrects this issue.

This fixes numerous bugs in this library, including multiple cases of
uninitialized data being passed into functions leading to null pointer
dereferences, buffer overflows, and more.
Openssl maintains an error queue.
A given function may add multiple errors to that queue, and only
printing the last one is worse than printing the whole thing.

In fact, as it was implemented before, the output was not consistent;
e.g. the same error could produce different messages.
The null check issue would result in totally invalid pubkeys not bailing
out the whole thing.

This adds a test which failed prior to the null struct fix.
@ghost ghost mentioned this pull request May 23, 2018
@cdbattags
Copy link

Ope, just now seeing this! Adding this to my new fork at https://github.com/cdbattags/lua-resty-jwt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants