Skip to content

[SANDBOXING] Node require fails when the resource is a symbolic link #3878

@luxu-gg

Description

@luxu-gg

What happened?

This error occurs when using a symlinked resource.

LoadResourceFile function reads the targeted file correctly.
Using require on the same path, produces a filesystem permission error.
Error: Access to this API has been restricted. Use --allow-fs-read to manage permissions.

Example code

const modulePath = GetResourcePath(GetCurrentResourceName()) + "/module.cjs";

// ✅ Success
try {
    console.log("Loading file via LoadResourceFile");
    const file = LoadResourceFile(GetCurrentResourceName(), "module.cjs");
    const { foo } = eval(file);
    foo();
    console.log("LoadResourceFile Passes");
} catch (e) {
    console.error("Failed to load module via LoadResourceFile:\n", e);
}

// ❌ Fail
try {
    console.log("Loading file via require");
    const { foo } = require(modulePath);
    foo();
    console.log("require Passes");
} catch (e) {
    console.error("Failed to load module via require:\n", e);
}

Expected result

require should be able to access the file like LoadResourceFile

Reproduction steps

Reproduction Steps

symb_bug.zip

  • Download the resource
  • Place it in your home folder (The location is arbitrary)
  • Create a symbolic link to the FXServer's resources folder
ln -s ~/symb_bug ~/FiveM/txData/Main/resources/symb_bug
  • Start this resource in your server.

Importancy

There's a workaround

Area(s)

FXServer, ScRT: JS

Specific version(s)

b27092/Lin

Additional information

No issue found on b25770/Lin

Metadata

Metadata

Assignees

No one assigned

    Labels

    ScRT: JSIssues/PRs related to the JavaScript scripting runtimebugtriageNeeds a preliminary assessment to determine the urgency and required action

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions