Skip to content

Comments

Rework the "by store" X509_LOOKUP method to open the given URI early#27529

Closed
levitte wants to merge 3 commits intoopenssl:masterfrom
levitte:fix-27461
Closed

Rework the "by store" X509_LOOKUP method to open the given URI early#27529
levitte wants to merge 3 commits intoopenssl:masterfrom
levitte:fix-27461

Conversation

@levitte
Copy link
Member

@levitte levitte commented Apr 30, 2025

The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time. cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes #27461
Alternative to #27507

@levitte levitte added branch: master Applies to master branch approval: review pending This pull request needs review by a committer triaged: bug The issue/pr is/fixes a bug tests: present The PR has suitable tests present labels Apr 30, 2025
@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

Side note: for anyone caring about the source format checker, there was an interesting false negative positive, see https://github.com/openssl/openssl/actions/runs/14751802024/job/41410783642?pr=27529 (@DDvO, @nhorman)

@levitte levitte added the style: waived exempted from style checks label Apr 30, 2025
Copy link
Member

@mattcaswell mattcaswell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I really understand why this fixes #27461 which seems to be about absolute paths for the file scheme...or is it just the silent error part of #27461?

@DDvO
Copy link
Contributor

DDvO commented Apr 30, 2025

Not sure I really understand why this fixes #27461 which seems to be about absolute paths for the file scheme...or is it just the silent error part of #27461?

@mattcaswell this new PR is about the silent error part.
The relative path extension has already been done.

@DDvO
Copy link
Contributor

DDvO commented Apr 30, 2025

Fixes #27461 Alternative to #27507

On one hand, it provides a more thorough fix,
on the other, it does not contain fixes for related minor bugs still covered by #27507.
One of those causes failure of the new verify test case "CAstore file://path":
https://github.com/openssl/openssl/actions/runs/14751802017/job/41410786941?pr=27529

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

... it does not contain fixes for related minor bugs. One of those causes failure of the new verify test case "CAstore file://path": https://github.com/openssl/openssl/actions/runs/14751802017/job/41410786941?pr=27529

That's because file://path is a URI with the authority path and no path. Will fix that check.

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

... it does not contain fixes for related minor bugs. One of those causes failure of the new verify test case "CAstore file://path": https://github.com/openssl/openssl/actions/runs/14751802017/job/41410786941?pr=27529

That's because file://path is a URI with the authority path and no path. Will fix that check.

... or huh??? hold on, something's weird with that one

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

Ah, I see. Yeah, please read RFC 8089, file://C:/what/ever.pem is non-standard, it should be file:///C:/what/ever.pem, i.e. the full URI path part should start with /C:

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

Not sure I really understand why this fixes #27461 which seems to be about absolute paths for the file scheme...or is it just the silent error part of #27461?

@mattcaswell this new PR is about the silent error part. The relative path extension has already been done.

Yeah. It's unfortunate that it got treated in the same issue, but quite frankly, this is at a point where raising a new issue "just 'cause" seems like unnecessary churn.

@DDvO
Copy link
Contributor

DDvO commented Apr 30, 2025

Ah, I see. Yeah, please read RFC 8089, file://C:/what/ever.pem is non-standard, it should be file:///C:/what/ever.pem, i.e. the full URI path part should start with /C:

So it turns out that the Perl function abs_path() is wrong, since it did not put a / before the drive letter.

@DDvO
Copy link
Contributor

DDvO commented Apr 30, 2025

BTW, while fixing 25-test_verify.t,
could you please also add a test case for a relative cert file name that does not have a scheme-like prefix, e.g.

my $relative_file = "cert.pem";
copy($rootcert, $relative_file);
ok(vfy_root("-CAstore", $relative_file), "CAstore relative_filename");

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

Ah, I see. Yeah, please read RFC 8089, file://C:/what/ever.pem is non-standard, it should be file:///C:/what/ever.pem, i.e. the full URI path part should start with /C:

So it turns out that the Perl function abs_path() is wrong, since it did not put a / before the drive letter.

It's perfectly functional, but requires a small tweak when used for a file: URI

@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

BTW, while fixing 25-test_verify.t, could you please also add a test case for a relative cert file name that does not have a scheme-like prefix, e.g.

my $relative_file = "cert.pem";
copy($rootcert, $relative_file);
ok(vfy_root("-CAstore", $relative_file), "CAstore relative_filename");

But... we already have tests for relative paths!

mattcaswell
mattcaswell previously approved these changes Apr 30, 2025
Copy link
Member

@t8m t8m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One minor thing

The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461
@levitte
Copy link
Member Author

levitte commented Apr 30, 2025

@mattcaswell, please re-approve.

mattcaswell
mattcaswell previously approved these changes Apr 30, 2025
t8m
t8m previously approved these changes Apr 30, 2025
@t8m t8m added approval: done This pull request has the required number of approvals and removed approval: review pending This pull request needs review by a committer labels Apr 30, 2025
DDvO pushed a commit to siemens/openssl that referenced this pull request May 5, 2025
The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit 0c48ee2)
DDvO added a commit to siemens/openssl that referenced this pull request May 5, 2025
Originally from openssl#27507, with some
changes.

Co-authored-by: Richard Levitte <[email protected]>

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit 927deba)
DDvO pushed a commit to siemens/openssl that referenced this pull request May 5, 2025
It was used to pass libctx and propq, which would override the
corresponding values passed to by_store_ctrl_ex().  This wasn't
really reasonable to do either way, as it could potentially be a
surprise to the user, who can reasonably expect that the URI is
opened with the libctx and propq that was passed with the URI, and
not with those passed later.

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit af5952d)
levitte added a commit to levitte/openssl that referenced this pull request May 5, 2025
The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit 0c48ee2)
levitte pushed a commit to levitte/openssl that referenced this pull request May 5, 2025
Originally from openssl#27507, with some
changes.

Co-authored-by: Richard Levitte <[email protected]>

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit 927deba)
levitte added a commit to levitte/openssl that referenced this pull request May 5, 2025
It was used to pass libctx and propq, which would override the
corresponding values passed to by_store_ctrl_ex().  This wasn't
really reasonable to do either way, as it could potentially be a
surprise to the user, who can reasonably expect that the URI is
opened with the libctx and propq that was passed with the URI, and
not with those passed later.

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)

(cherry picked from commit af5952d)
@DDvO
Copy link
Contributor

DDvO commented May 5, 2025

So backporting will have to happen in separate PRs.

I just did for 3.4 in #27558.

On 3.3 and older, there are code differences in crypto/x509/by_store.c that require an effort to get right, more than a simple cherry-pick allows.

I tried to come up with a respective backport PR,
but as the conflicts are not straightforward to resolve, I don't dare to do with my limited overview of OSSL_STORE.

@levitte
Copy link
Member Author

levitte commented May 5, 2025

I've done the backports in:

@mattcaswell
Copy link
Member

FYI, this seems to have had a significant positive benefit to the x509storeissuer performance test for the 3.0, 3.2 and 3.3 backports. There is a marked drop in the time taken to run that test in those branches on the date that the backport of this PR was merged:

https://openssl-library.org/performance.html

image

DDvO pushed a commit to siemens/openssl that referenced this pull request Jun 16, 2025
The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
DDvO added a commit to siemens/openssl that referenced this pull request Jun 16, 2025
Originally from openssl#27507, with some
changes.

Co-authored-by: Richard Levitte <[email protected]>

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from openssl#27529)
DDvO pushed a commit to siemens/openssl that referenced this pull request Jun 16, 2025
It was used to pass libctx and propq, which would override the
corresponding values passed to by_store_ctrl_ex().  This wasn't
really reasonable to do either way, as it could potentially be a
surprise to the user, who can reasonably expect that the URI is
opened with the libctx and propq that was passed with the URI, and
not with those passed later.

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
Originally from openssl#27507, with some
changes.

Co-authored-by: Richard Levitte <[email protected]>

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
It was used to pass libctx and propq, which would override the
corresponding values passed to by_store_ctrl_ex().  This wasn't
really reasonable to do either way, as it could potentially be a
surprise to the user, who can reasonably expect that the URI is
opened with the libctx and propq that was passed with the URI, and
not with those passed later.

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
The cached X509_LOOKUP method data is no longer just the URI, but now
includes the OSSL_STORE_CTX pointer, and required parameters to reopen
the URI at any time.  cache_objects() is modified to handle this, and
only (re)open the URI when it wasn't previously opened, or when it was
closed by an earlier call.

This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded.

This assumes that if the URI could be opened once, it can be opened
again.

Fixes openssl#27461

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
Originally from openssl#27507, with some
changes.

Co-authored-by: Richard Levitte <[email protected]>

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Richard Levitte <[email protected]>
(Merged from openssl#27529)
MichaelA-Fireblocks pushed a commit to MichaelA-Fireblocks/openssl that referenced this pull request Jul 15, 2025
It was used to pass libctx and propq, which would override the
corresponding values passed to by_store_ctrl_ex().  This wasn't
really reasonable to do either way, as it could potentially be a
surprise to the user, who can reasonably expect that the URI is
opened with the libctx and propq that was passed with the URI, and
not with those passed later.

Reviewed-by: David von Oheimb <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from openssl#27529)
mattcaswell added a commit to mattcaswell/openssl that referenced this pull request Aug 7, 2025
Previously openssl#27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by multiple
threads. We then get a race condition where multiple threads are all using
(and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex() and
`cache_objects` is presumably an optimisation to avoid having to open the
store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes openssl#28171
mattcaswell added a commit to mattcaswell/openssl that referenced this pull request Aug 19, 2025
Previously openssl#27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes openssl#28171
openssl-machine pushed a commit that referenced this pull request Aug 21, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Saša Nedvědický <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from #28198)
openssl-machine pushed a commit that referenced this pull request Aug 21, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Saša Nedvědický <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from #28198)

(cherry picked from commit 08951fb)
openssl-machine pushed a commit that referenced this pull request Aug 21, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Saša Nedvědický <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from #28198)

(cherry picked from commit 08951fb)
openssl-machine pushed a commit that referenced this pull request Aug 21, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Saša Nedvědický <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from #28198)

(cherry picked from commit 08951fb)
openssl-machine pushed a commit that referenced this pull request Aug 21, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Saša Nedvědický <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
(Merged from #28198)

(cherry picked from commit 08951fb)
mattcaswell added a commit to mattcaswell/openssl that referenced this pull request Aug 29, 2025
Previously openssl#27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes openssl#28171
openssl-machine pushed a commit that referenced this pull request Sep 4, 2025
Previously #27529 made a change to `by_store_ctrl_ex` in order to open
the OSSL_STORE early. The reason given in that PR is:

"This way, we can call OSSL_STORE_open_ex() in by_store_ctrl_ex(), and
get to see possible errors when the URI is loaded"

That PR then kept the store open until cache_objects is called and then
reused it. Unfortunately by the time cache_objects() is called we could be
in a multi-threaded scenario where the X509_STORE is being shared by
multiple threads. We then get a race condition where multiple threads are
all using (and ultimately closing) the same `OSSL_STORE_CTX`.

The purpose of keeping the `OSSL_STORE` object between by_store_ctrl_ex()
and `cache_objects` is presumably an optimisation to avoid having to open
the store twice. But this does not work because of the above issue.

We just take the hit and open it again.

Fixes #28171

Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Saša Nedvědický <[email protected]>
(Merged from #28385)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approval: ready to merge The 24 hour grace period has passed, ready to merge branch: master Applies to master branch branch: 3.0 Applies to openssl-3.0 branch branch: 3.2 Applies to openssl-3.2 (EOL) branch: 3.3 Applies to openssl-3.3 branch: 3.4 Applies to openssl-3.4 branch: 3.5 Applies to openssl-3.5 style: waived exempted from style checks tests: present The PR has suitable tests present triaged: bug The issue/pr is/fixes a bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Loading certs via file: scheme only works for absolute paths and fails silently on error

5 participants