Fixed bug in execve() on linux and bsd

Bryan Roe committed Feb 2, 2021 at 22:32 UTC 6629a863399fdd692ae802a991a976b17ac407ad
2 files changed +8
agents/meshcore.js
+4
@@ -3906,6 +3906,7 @@ function linux_execv(name, agentfilename, sessionid)
3906 var i;
3907 var args;
3908 var argarr = [process.execPath];
3909 + var argtmp = [];
3910 var path = require('_GenericMarshal').CreateVariable(process.execPath);
3911
3912 if (require('MeshAgent').getStartupOptions != null) {
@@ -3918,6 +3919,7 @@ function linux_execv(name, agentfilename, sessionid)
3919 args = require('_GenericMarshal').CreateVariable((1 + argarr.length) * require('_GenericMarshal').PointerSize);
3920 for (i = 0; i < argarr.length; ++i) {
3921 var arg = require('_GenericMarshal').CreateVariable(argarr[i]);
3922 + argtmp.push(arg);
3923 arg.pointerBuffer().copy(args.toBuffer(), i * require('_GenericMarshal').PointerSize);
3924 }
3925
@@ -3965,6 +3967,7 @@ function bsd_execv(name, agentfilename, sessionid) {
3967 var i;
3968 var path = require('_GenericMarshal').CreateVariable(process.execPath);
3969 var argarr = [process.execPath];
3970 + var argtmp = [];
3971 var args;
3972 var options = require('MeshAgent').getStartupOptions();
3973 for (i in options) {
@@ -3973,6 +3976,7 @@ function bsd_execv(name, agentfilename, sessionid) {
3976 args = require('_GenericMarshal').CreateVariable((1 + argarr.length) * require('_GenericMarshal').PointerSize);
3977 for (i = 0; i < argarr.length; ++i) {
3978 var arg = require('_GenericMarshal').CreateVariable(argarr[i]);
3979 + argtmp.push(arg);
3980 arg.pointerBuffer().copy(args.toBuffer(), i * require('_GenericMarshal').PointerSize);
3981 }
3982
agents/recoverycore.js
+4
@@ -237,6 +237,7 @@ function linux_execv(name, agentfilename, sessionid)
237
238 var i;
239 var args;
240 + var argtmp = [];
241 var argarr = [process.execPath];
242 var path = require('_GenericMarshal').CreateVariable(process.execPath);
243
@@ -250,6 +251,7 @@ function linux_execv(name, agentfilename, sessionid)
251 args = require('_GenericMarshal').CreateVariable((1 + argarr.length) * require('_GenericMarshal').PointerSize);
252 for (i = 0; i < argarr.length; ++i) {
253 var arg = require('_GenericMarshal').CreateVariable(argarr[i]);
254 + argtmp.push(arg);
255 arg.pointerBuffer().copy(args.toBuffer(), i * require('_GenericMarshal').PointerSize);
256 }
257
@@ -298,6 +300,7 @@ function bsd_execv(name, agentfilename, sessionid) {
300 var i;
301 var path = require('_GenericMarshal').CreateVariable(process.execPath);
302 var argarr = [process.execPath];
303 + var argtmp = [];
304 var args;
305 var options = require('MeshAgent').getStartupOptions();
306 for (i in options) {
@@ -306,6 +309,7 @@ function bsd_execv(name, agentfilename, sessionid) {
309 args = require('_GenericMarshal').CreateVariable((1 + argarr.length) * require('_GenericMarshal').PointerSize);
310 for (i = 0; i < argarr.length; ++i) {
311 var arg = require('_GenericMarshal').CreateVariable(argarr[i]);
312 + argtmp.push(arg);
313 arg.pointerBuffer().copy(args.toBuffer(), i * require('_GenericMarshal').PointerSize);
314 }
315