@ai-ecoverse/slicc-kernel 1.178.3 → 1.178.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7518,7 +7518,7 @@ var init_version = __esm({
7518
7518
  "src/version.ts"() {
7519
7519
  "use strict";
7520
7520
  init_captured_globals();
7521
- KERNEL_VERSION = true ? "1.178.3" : "0.0.0-dev";
7521
+ KERNEL_VERSION = true ? "1.178.4" : "0.0.0-dev";
7522
7522
  OS_RELEASE = "6.0.0-slicc";
7523
7523
  }
7524
7524
  });
@@ -7517,7 +7517,7 @@ var init_version = __esm({
7517
7517
  "src/version.ts"() {
7518
7518
  "use strict";
7519
7519
  init_captured_globals();
7520
- KERNEL_VERSION = true ? "1.178.3" : "0.0.0-dev";
7520
+ KERNEL_VERSION = true ? "1.178.4" : "0.0.0-dev";
7521
7521
  OS_RELEASE = "6.0.0-slicc";
7522
7522
  }
7523
7523
  });
package/dist/node.js CHANGED
@@ -868,13 +868,6 @@ async function linkable(g, from, to, follow2) {
868
868
  }
869
869
  await inParent(g, "link", to);
870
870
  }
871
- async function ownerOnly(g, op, path, follow2) {
872
- const walked = await need(g, op, path, 0, { follow: follow2 });
873
- const perm = walked.perm;
874
- if (!perm || g.cred.euid === 0 || perm.uid === g.cred.euid) return walked;
875
- if (await present(g.fs, walked.path, false)) deny(g, op, path, "EPERM");
876
- return walked;
877
- }
878
871
  async function chmodMode(g, path, mode) {
879
872
  const walked = await need(g, "chmod", path, 0, { follow: true });
880
873
  const perm = walked.perm;
@@ -896,17 +889,26 @@ function heldChmodMode(g, path, st, mode) {
896
889
  function heldRetimable(g, path, st, now) {
897
890
  const perm = permOf(st);
898
891
  if (g.cred.euid === 0 || perm.uid === g.cred.euid) return;
899
- if (!now) deny(g, "futimens", path, "EPERM");
900
- else if (!permits(g.cred, perm, W_OK, false)) deny(g, "futimens", path);
892
+ if (now || st.fat) {
893
+ if (!permits(g.cred, perm, W_OK, false)) deny(g, "futimens", path);
894
+ return;
895
+ }
896
+ deny(g, "futimens", path, "EPERM");
901
897
  }
902
898
  async function retimable(g, op, path, now = false) {
903
899
  const follow2 = op !== "lutimes";
904
- if (!now) return void await ownerOnly(g, op, path, follow2);
905
900
  const walked = await need(g, op, path, 0, { follow: follow2 });
906
901
  const perm = walked.perm;
907
902
  if (!perm || g.cred.euid === 0 || perm.uid === g.cred.euid) return;
908
- if (permits(g.cred, perm, W_OK, false)) return;
909
- if (await present(g.fs, walked.path, false)) deny(g, op, path);
903
+ const look = follow2 ? g.fs.stat : g.fs.lstat;
904
+ const st = await look.call(g.fs, walked.path).catch(() => void 0);
905
+ if (now || st?.fat) {
906
+ if (!permits(g.cred, perm, W_OK, false) && await present(g.fs, walked.path, false)) {
907
+ deny(g, op, path);
908
+ }
909
+ return;
910
+ }
911
+ if (await present(g.fs, walked.path, false)) deny(g, op, path, "EPERM");
910
912
  }
911
913
  async function fileWritable(g, op, path) {
912
914
  await need(g, op, path, W_OK, { directory: false });
@@ -3709,7 +3711,7 @@ function satisfies(version, range2) {
3709
3711
  }
3710
3712
 
3711
3713
  // src/version.ts
3712
- var KERNEL_VERSION = true ? "1.178.3" : "0.0.0-dev";
3714
+ var KERNEL_VERSION = true ? "1.178.4" : "0.0.0-dev";
3713
3715
  var OS_RELEASE = "6.0.0-slicc";
3714
3716
  function procVersion() {
3715
3717
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC