include::../description.adoc[]

include::../ask-yourself.adoc[]

include::../recommended.adoc[]

== Sensitive Code Example

Node.js https://nodejs.org/api/fs.html[`+fs+`]

----
const fs = require('fs');

fs.chmodSync("/tmp/fs", 0o777); // Sensitive
----

----
const fs = require('fs');
const fsPromises = fs.promises;

fsPromises.chmod("/tmp/fsPromises", 0o777); // Sensitive
----

----
const fs = require('fs');
const fsPromises = fs.promises

async function fileHandler() {
  let filehandle;
  try {
    filehandle = fsPromises.open('/tmp/fsPromises', 'r');
    filehandle.chmod(0o777); // Sensitive
  } finally {
    if (filehandle !== undefined)
      filehandle.close();
  }
}
----

Node.js https://nodejs.org/api/process.html#process_process_umask_mask[`+process.umask+`]

----
const process = require('process');

process.umask(0o000); // Sensitive
----

== Compliant Solution

Node.js https://nodejs.org/api/fs.html[`+fs+`]

----
const fs = require('fs');

fs.chmodSync("/tmp/fs", 0o770); // Compliant
----

----
const fs = require('fs');
const fsPromises = fs.promises;

fsPromises.chmod("/tmp/fsPromises", 0o770); // Compliant
----

----
const fs = require('fs');
const fsPromises = fs.promises

async function fileHandler() {
  let filehandle;
  try {
    filehandle = fsPromises.open('/tmp/fsPromises', 'r');
    filehandle.chmod(0o770); // Compliant
  } finally {
    if (filehandle !== undefined)
      filehandle.close();
  }
}
----

Node.js https://nodejs.org/api/process.html#process_process_umask_mask[`+process.umask+`]

----
const process = require('process');

process.umask(0o007); // Compliant
----

include::../see.adoc[]
