@ai-ecoverse/slicc-kernel 1.173.1 → 1.173.3
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.
- package/README.md +2 -2
- package/dist/index.js +11 -1
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +68 -12
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-process-worker.cjs +1 -1
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +68 -12
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/node.d.ts +1 -1
- package/dist/types/sudo.d.ts +5 -1
- package/package.json +2 -2
|
@@ -7513,7 +7513,7 @@ var init_version = __esm({
|
|
|
7513
7513
|
"src/version.ts"() {
|
|
7514
7514
|
"use strict";
|
|
7515
7515
|
init_captured_globals();
|
|
7516
|
-
KERNEL_VERSION = true ? "1.173.
|
|
7516
|
+
KERNEL_VERSION = true ? "1.173.3" : "0.0.0-dev";
|
|
7517
7517
|
OS_RELEASE = "6.0.0-slicc";
|
|
7518
7518
|
}
|
|
7519
7519
|
});
|
|
@@ -7512,7 +7512,7 @@ var init_version = __esm({
|
|
|
7512
7512
|
"src/version.ts"() {
|
|
7513
7513
|
"use strict";
|
|
7514
7514
|
init_captured_globals();
|
|
7515
|
-
KERNEL_VERSION = true ? "1.173.
|
|
7515
|
+
KERNEL_VERSION = true ? "1.173.3" : "0.0.0-dev";
|
|
7516
7516
|
OS_RELEASE = "6.0.0-slicc";
|
|
7517
7517
|
}
|
|
7518
7518
|
});
|
package/dist/node.js
CHANGED
|
@@ -3702,7 +3702,7 @@ function satisfies(version, range2) {
|
|
|
3702
3702
|
}
|
|
3703
3703
|
|
|
3704
3704
|
// src/version.ts
|
|
3705
|
-
var KERNEL_VERSION = true ? "1.173.
|
|
3705
|
+
var KERNEL_VERSION = true ? "1.173.3" : "0.0.0-dev";
|
|
3706
3706
|
var OS_RELEASE = "6.0.0-slicc";
|
|
3707
3707
|
function procVersion() {
|
|
3708
3708
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -30649,10 +30649,66 @@ var RULE = new RegExp(
|
|
|
30649
30649
|
);
|
|
30650
30650
|
var TERM = /^[A-Za-z0-9._+-]+$/;
|
|
30651
30651
|
var PLAIN3 = /^[A-Za-z0-9_@%+=:,./-]+$/;
|
|
30652
|
+
var CONTROL = /[\0-\x1f\x7f]/;
|
|
30652
30653
|
var USAGE = "usage: sudo [-n] [-u user] [--] command [args...]\n sudo -l";
|
|
30654
|
+
var DENIED2 = "sudo: approval denied";
|
|
30655
|
+
var DENIAL_MAX = 500;
|
|
30656
|
+
var ABORTED = /* @__PURE__ */ Symbol("aborted");
|
|
30657
|
+
function hasControl(text) {
|
|
30658
|
+
return CONTROL.test(text);
|
|
30659
|
+
}
|
|
30660
|
+
function withoutControl(text) {
|
|
30661
|
+
return text.replace(CONTROL, (ch) => {
|
|
30662
|
+
const n = ch.charCodeAt(0);
|
|
30663
|
+
if (n === 9) return "\\t";
|
|
30664
|
+
if (n === 10) return "\\n";
|
|
30665
|
+
if (n === 13) return "\\r";
|
|
30666
|
+
return `\\x${n.toString(16).padStart(2, "0")}`;
|
|
30667
|
+
});
|
|
30668
|
+
}
|
|
30653
30669
|
function failed3(errno3, error) {
|
|
30654
30670
|
return { error, errno: errno3 };
|
|
30655
30671
|
}
|
|
30672
|
+
function denialText(answer2) {
|
|
30673
|
+
try {
|
|
30674
|
+
if (typeof answer2 !== "object" || answer2 === null) return DENIED2;
|
|
30675
|
+
const { answer: kind, message: message3 } = answer2;
|
|
30676
|
+
if (kind !== "deny" || typeof message3 !== "string") return DENIED2;
|
|
30677
|
+
const chars = [
|
|
30678
|
+
...message3.replace(/[\t\n\v\f\r\u0085\u2028\u2029]+/g, " ").replace(new RegExp("\\p{Cc}", "gu"), "").trimEnd()
|
|
30679
|
+
];
|
|
30680
|
+
const text = chars.length > DENIAL_MAX ? `${chars.slice(0, DENIAL_MAX - 1).join("")}\u2026` : chars.join("");
|
|
30681
|
+
return text.startsWith("sudo: ") && text.slice(6).trim() !== "" ? text : DENIED2;
|
|
30682
|
+
} catch {
|
|
30683
|
+
return DENIED2;
|
|
30684
|
+
}
|
|
30685
|
+
}
|
|
30686
|
+
async function answerOf2(approve, req, signal) {
|
|
30687
|
+
let reply;
|
|
30688
|
+
let cut;
|
|
30689
|
+
const snapshot = () => reply === void 0 ? Promise.resolve(ABORTED) : Promise.race([reply, Promise.resolve(ABORTED)]).catch(() => "deny");
|
|
30690
|
+
const aborted3 = new Promise(
|
|
30691
|
+
(resolve2) => signal.addEventListener(
|
|
30692
|
+
"abort",
|
|
30693
|
+
() => {
|
|
30694
|
+
cut = snapshot();
|
|
30695
|
+
resolve2();
|
|
30696
|
+
},
|
|
30697
|
+
{ once: true }
|
|
30698
|
+
)
|
|
30699
|
+
);
|
|
30700
|
+
try {
|
|
30701
|
+
reply = Promise.resolve(approve(req, { signal }));
|
|
30702
|
+
} catch {
|
|
30703
|
+
reply = Promise.resolve("deny");
|
|
30704
|
+
}
|
|
30705
|
+
try {
|
|
30706
|
+
const answer2 = await Promise.race([reply, aborted3]);
|
|
30707
|
+
return cut === void 0 ? answer2 : await cut;
|
|
30708
|
+
} catch {
|
|
30709
|
+
return cut === void 0 ? "deny" : await cut;
|
|
30710
|
+
}
|
|
30711
|
+
}
|
|
30656
30712
|
function unescaped(double) {
|
|
30657
30713
|
return double.replace(/\\(["\\$`])/g, "$1");
|
|
30658
30714
|
}
|
|
@@ -30675,7 +30731,8 @@ function splitWords(text) {
|
|
|
30675
30731
|
return words2;
|
|
30676
30732
|
}
|
|
30677
30733
|
function quoteWord(word) {
|
|
30678
|
-
|
|
30734
|
+
const text = hasControl(word) ? withoutControl(word) : word;
|
|
30735
|
+
return PLAIN3.test(text) ? text : `'${text.replaceAll("'", `'\\''`)}'`;
|
|
30679
30736
|
}
|
|
30680
30737
|
function addPart(word, part) {
|
|
30681
30738
|
const last = word.length - 1;
|
|
@@ -30811,7 +30868,7 @@ function recordedBare(line, file, rule) {
|
|
|
30811
30868
|
const head = `NOPASSWD ${rule.who} (${rule.target}) `;
|
|
30812
30869
|
const cmnd = `Cmnd ${quoteWord(rule.cmnd.path)}`;
|
|
30813
30870
|
const cwd = rule.cwd === void 0 ? "" : `Cwd ${quoteWord(rule.cwd)} `;
|
|
30814
|
-
return line === `${head}${cwd}${cmnd}`;
|
|
30871
|
+
return line.trimEnd() === `${head}${cwd}${cmnd}`;
|
|
30815
30872
|
}
|
|
30816
30873
|
function flags(parsed2, arg, next3) {
|
|
30817
30874
|
for (let j = 1; j < arg.length; j++) {
|
|
@@ -31042,7 +31099,7 @@ ${lines2}
|
|
|
31042
31099
|
}
|
|
31043
31100
|
async ask(caller, self, target, argv, path, cwd, requester) {
|
|
31044
31101
|
const { approve } = this.o;
|
|
31045
|
-
if (!approve || requester.aborted) return failed3("EACCES",
|
|
31102
|
+
if (!approve || requester.aborted) return failed3("EACCES", DENIED2);
|
|
31046
31103
|
const createdAt = Date.now();
|
|
31047
31104
|
const timeout = this.o.timeoutMs ?? SUDO_TIMEOUT_MS;
|
|
31048
31105
|
const req = {
|
|
@@ -31065,16 +31122,14 @@ ${lines2}
|
|
|
31065
31122
|
const timer = setTimeout(() => control.abort("expired"), timeout);
|
|
31066
31123
|
const withdraw = () => control.abort("withdrawn");
|
|
31067
31124
|
requester.addEventListener("abort", withdraw, { once: true });
|
|
31068
|
-
const
|
|
31069
|
-
(resolve2) => control.signal.addEventListener("abort", () => resolve2("aborted"), { once: true })
|
|
31070
|
-
);
|
|
31125
|
+
const ended = () => control.signal.reason === "expired" ? failed3("ETIMEDOUT", "sudo: the request expired") : failed3("EINTR", "sudo: the request was withdrawn");
|
|
31071
31126
|
try {
|
|
31072
|
-
const
|
|
31073
|
-
|
|
31074
|
-
if (answer2 === "
|
|
31075
|
-
return control.signal.
|
|
31127
|
+
const answer2 = await answerOf2(approve, req, control.signal);
|
|
31128
|
+
if (answer2 === ABORTED) return ended();
|
|
31129
|
+
if (answer2 === "once" || answer2 === "always") {
|
|
31130
|
+
return control.signal.aborted ? ended() : answer2;
|
|
31076
31131
|
}
|
|
31077
|
-
return
|
|
31132
|
+
return failed3("EACCES", denialText(answer2));
|
|
31078
31133
|
} finally {
|
|
31079
31134
|
clearTimeout(timer);
|
|
31080
31135
|
requester.removeEventListener("abort", withdraw);
|
|
@@ -31084,6 +31139,7 @@ ${lines2}
|
|
|
31084
31139
|
const { fs } = this.o;
|
|
31085
31140
|
const path = `${SUDOERS_D}/${self.name}`;
|
|
31086
31141
|
if (!NAME3.test(self.name)) return false;
|
|
31142
|
+
if (hasControl(cwd) || argv.some(hasControl)) return false;
|
|
31087
31143
|
try {
|
|
31088
31144
|
await this.provision();
|
|
31089
31145
|
if (!await this.trusted(SUDOERS_D)) return false;
|