From d92cf45e0e0e2239b22ad30e8ae20eea046ea5ac Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Mon, 28 Oct 2019 15:34:29 -0700 Subject: [PATCH] Modified, so win-bcd throws an exception if accessed on 64 bit windows from 32 bit process, because bcdedit on 64 bit windows can only be accessed from 64 bit processes. --- microscript/ILibDuktape_Polyfills.c | 2 +- modules/win-bcd.js | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index e12851f..496ee04 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2006,7 +2006,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addModule('win-certstore', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8KY29uc3QgQ0VSVF9GSU5EX1NVQkpFQ1RfTkFNRSA9ICgyIDw8IDE2IHwgNyk7CmNvbnN0IENFUlRfU1RPUkVfT1BFTl9FWElTVElOR19GTEFHID0gMHgwMDAwNDAwMDsKY29uc3QgQ0VSVF9TVE9SRV9QUk9WX1NZU1RFTSA9IDEwOwpjb25zdCBDRVJUX1g1MDBfTkFNRV9TVFIgPSAzOwpjb25zdCBQS0NTXzdfQVNOX0VOQ09ESU5HID0gMHgwMDAxMDAwMDsKY29uc3QgWDUwOV9BU05fRU5DT0RJTkcgPSAweDAwMDAwMDAxOwpjb25zdCBDRVJUX0NMT1NFX1NUT1JFX0ZPUkNFX0ZMQUcgPSAweDAwMDAwMDAxOwpjb25zdCBDRVJUX0NMT1NFX1NUT1JFX0NIRUNLX0ZMQUcgPSAweDAwMDAwMDAyOwoKZnVuY3Rpb24gY2VydHN0b3JlKCkKewogICAgdGhpcy5fT2JqZWN0SUQgPSAnd2luLWNlcnRzdG9yZSc7CiAgICB0aGlzLl9tYXJzaGFsID0gcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJyk7CiAgICB0aGlzLl9DcnlwdDMyID0gdGhpcy5fbWFyc2hhbC5DcmVhdGVOYXRpdmVQcm94eSgnQ3J5cHQzMi5kbGwnKTsKICAgIHRoaXMuX0NyeXB0MzIuQ3JlYXRlTWV0aG9kKCdDZXJ0Q2xvc2VTdG9yZScpOwogICAgdGhpcy5fQ3J5cHQzMi5DcmVhdGVNZXRob2QoJ0NlcnREZWxldGVDZXJ0aWZpY2F0ZUZyb21TdG9yZScpOwogICAgdGhpcy5fQ3J5cHQzMi5DcmVhdGVNZXRob2QoJ0NlcnRGaW5kQ2VydGlmaWNhdGVJblN0b3JlJyk7CiAgICB0aGlzLl9DcnlwdDMyLkNyZWF0ZU1ldGhvZCgnQ2VydE9wZW5TdG9yZScpOwogICAgdGhpcy5fQ3J5cHQzMi5DcmVhdGVNZXRob2QoJ0NlcnRTdHJUb05hbWVBJyk7CgogICAgdGhpcy5fTmNycHl0ID0gdGhpcy5fbWFyc2hhbC5DcmVhdGVOYXRpdmVQcm94eSgnTmNyeXB0LmRsbCcpOwogICAgdGhpcy5fTmNycHl0LkNyZWF0ZU1ldGhvZCgnTkNyeXB0RnJlZU9iamVjdCcpOwogICAgdGhpcy5fTmNycHl0LkNyZWF0ZU1ldGhvZCgnTkNyeXB0T3BlblN0b3JhZ2VQcm92aWRlcicpOwogICAgdGhpcy5TVE9SRV9MT0NBVElPTiA9IHsgTE9DQUxfTUFDSElORTogMiA8PCAxNiwgQ1VSUkVOVF9VU0VSOiAxIDw8IDE2IH07CiAgICB0aGlzLlBST1ZJREVSUyA9IFt0aGlzLl9tYXJzaGFsLkNyZWF0ZVZhcmlhYmxlKCdNaWNyb3NvZnQgUGxhdGZvcm0gQ3J5cHRvIFByb3ZpZGVyJywgeyB3aWRlOiB0cnVlIH0pLCB0aGlzLl9tYXJzaGFsLkNyZWF0ZVZhcmlhYmxlKCdNaWNyb3NvZnQgU29mdHdhcmUgS2V5IFN0b3JhZ2UgUHJvdmlkZXInLCB7IHdpZGU6IHRydWUgfSldOwoKICAgIHRoaXMuT3BlbkNyeXB0b1Byb3ZpZGVyID0gZnVuY3Rpb24gT3BlbkNyeXB0b1Byb3ZpZGVyKCkKICAgIHsKICAgICAgICB2YXIgcmV0ID0gbnVsbDsKICAgICAgICB2YXIgcCA9IHRoaXMuX21hcnNoYWwuQ3JlYXRlUG9pbnRlcigpOwogICAgICAgIGZvcih2YXIgcHJvdmlkZXIgaW4gdGhpcy5QUk9WSURFUlMpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLl9OY3JweXQuTkNyeXB0T3BlblN0b3JhZ2VQcm92aWRlcihwLCB0aGlzLlBST1ZJREVSU1twcm92aWRlcl0sIDApOwogICAgICAgICAgICBpZiAocC5EZXJlZigpLlZhbCAhPSAwKSB7IHJldCA9IHAuRGVyZWYoKTsgcmV0Ll9iID0gcDsgYnJlYWs7fQogICAgICAgIH0KICAgICAgICBpZiAocmV0ID09IG51bGwpIHsgdGhyb3cgKCdVbmFibGUgdG8gb3BlbiBDcnlwdG9Qcm92aWRlcicpOyB9CiAgICAgICAgcmV0Ll9jcnlwdCA9IHRoaXM7CiAgICAgICAgcmV0Ll9maW5hbGl6ZWQgPSBmYWxzZTsKICAgICAgICByZXQuY2xvc2UgPSBmdW5jdGlvbigpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLl9maW5hbGl6ZWQgPSB0cnVlOwogICAgICAgICAgICB0aGlzLl9jcnlwdC5fTmNycHl0Lk5DcnlwdEZyZWVPYmplY3QodGhpcyk7CiAgICAgICAgfQogICAgICAgIHJldC5wcmVwZW5kT25jZUxpc3RlbmVyKCd+JywgZnVuY3Rpb24gKCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCF0aGlzLl9maW5hbGl6ZWQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiAocmV0KTsKICAgIH07CiAgICB0aGlzLk9wZW5TdG9yZSA9IGZ1bmN0aW9uIE9wZW5TdG9yZShwcm92aWRlciwgbG9jYXRpb24pCiAgICB7CiAgICAgICAgdmFyIGhzdG9yZSA9IHRoaXMuX0NyeXB0MzIuQ2VydE9wZW5TdG9yZShDRVJUX1NUT1JFX1BST1ZfU1lTVEVNLCBYNTA5X0FTTl9FTkNPRElORyB8IFBLQ1NfN19BU05fRU5DT0RJTkcsIHByb3ZpZGVyLCBsb2NhdGlvbiB8IENFUlRfU1RPUkVfT1BFTl9FWElTVElOR19GTEFHLCB0aGlzLl9tYXJzaGFsLkNyZWF0ZVZhcmlhYmxlKCdNWScsIHt3aWRlOiB0cnVlfSkpOwogICAgICAgIGlmIChoc3RvcmUuVmFsID09IDApIHsgdGhyb3cgKCdFcnJvciBvcGVuaW5nIENlcnRTdG9yZScpOyB9CiAgICAgICAgaHN0b3JlLl9jcnlwdCA9IHRoaXM7CiAgICAgICAgaHN0b3JlLl9maW5hbGl6ZWQgPSBmYWxzZTsKICAgICAgICBoc3RvcmUuY2xvc2UgPSBmdW5jdGlvbiBjbG9zZSgpIHsgdGhpcy5fZmluYWxpemVkID0gdHJ1ZTsgdGhpcy5fY3J5cHQuX0NyeXB0MzIuQ2VydENsb3NlU3RvcmUodGhpcywgQ0VSVF9DTE9TRV9TVE9SRV9DSEVDS19GTEFHKTsgfTsKICAgICAgICBoc3RvcmUucHJlcGVuZE9uY2VMaXN0ZW5lcignficsIGZ1bmN0aW9uICgpIHsgaWYgKCF0aGlzLl9maW5hbGl6ZWQpIHsgdGhpcy5jbG9zZSgpOyB9IH0pOwogICAgICAgIHJldHVybiAoaHN0b3JlKTsKICAgIH07CiAgICB0aGlzLkdldENlcnRpZmljYXRlID0gZnVuY3Rpb24gR2V0Q2VydGlmaWNhdGUoQ04sIGxvY2F0aW9uKQogICAgewogICAgICAgIHZhciBzdWJqZWN0ID0gdGhpcy5fbWFyc2hhbC5DcmVhdGVWYXJpYWJsZShDTik7CiAgICAgICAgdmFyIGVuY29kZWRTaXplID0gdGhpcy5fbWFyc2hhbC5DcmVhdGVWYXJpYWJsZSg0KTsgLy8gRFdPUkQKICAgICAgICBpZih0aGlzLl9DcnlwdDMyLkNlcnRTdHJUb05hbWVBKFg1MDlfQVNOX0VOQ09ESU5HLCBzdWJqZWN0LCBDRVJUX1g1MDBfTkFNRV9TVFIsIDAsIDAsIGVuY29kZWRTaXplLCAwKS5WYWwgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIHRocm93KCdFcnJvciBjYWxjdWxhdGluZyBDRVJUX1g1MDBfTkFNRV9TVFIgZm9yICgnICsgQ04gKyAnKScpOwogICAgICAgIH0KICAgICAgICB2YXIgc3ViamVjdEVuY29kZWQgPSB0aGlzLl9tYXJzaGFsLkNyZWF0ZVZhcmlhYmxlKGVuY29kZWRTaXplLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCkpOwogICAgICAgIGlmKHRoaXMuX0NyeXB0MzIuQ2VydFN0clRvTmFtZUEoWDUwOV9BU05fRU5DT0RJTkcsIHN1YmplY3QsIENFUlRfWDUwMF9OQU1FX1NUUiwgMCwgc3ViamVjdEVuY29kZWQsIGVuY29kZWRTaXplLCAwKS5WYWwgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIHRocm93KCdFcnJvciBlbmNvZGluZyBDRVJUX1g1MDBfTkFNRV9TVFIgZm9yICgnICsgQ04gKyAnKScpOwogICAgICAgIH0KICAgICAgICB2YXIgcHJvdmlkZXIgPSB0aGlzLk9wZW5DcnlwdG9Qcm92aWRlcigpOwogICAgICAgIHZhciBzdG9yZSA9IHRoaXMuT3BlblN0b3JlKHByb3ZpZGVyLCBsb2NhdGlvbik7CiAgICAgICAgdmFyIHNlYXJjaCA9IHRoaXMuX21hcnNoYWwuQ3JlYXRlVmFyaWFibGUodGhpcy5fbWFyc2hhbC5Qb2ludGVyU2l6ZSAqIDIpOwogICAgICAgIHNlYXJjaC5EZXJlZigwLDQpLnRvQnVmZmVyKCkud3JpdGVVSW50MzJMRShlbmNvZGVkU2l6ZS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpKTsKICAgICAgICBzdWJqZWN0RW5jb2RlZC5wb2ludGVyQnVmZmVyKCkuY29weShzZWFyY2gudG9CdWZmZXIoKSwgdGhpcy5fbWFyc2hhbC5Qb2ludGVyU2l6ZSk7CgogICAgICAgIC8vIExvb2sgZm9yIGNlcnQKICAgICAgICB2YXIgY2VydGN0eCA9IHRoaXMuX0NyeXB0MzIuQ2VydEZpbmRDZXJ0aWZpY2F0ZUluU3RvcmUoc3RvcmUsIFg1MDlfQVNOX0VOQ09ESU5HIHwgUEtDU183X0FTTl9FTkNPRElORywgMCwgQ0VSVF9GSU5EX1NVQkpFQ1RfTkFNRSwgc2VhcmNoLCAwKTsKICAgICAgICBpZihjZXJ0Y3R4LlZhbCAhPSAwKQogICAgICAgIHsKICAgICAgICAgICAgLy8gRm91bmQgQ2VydGlmaWNhdGUKICAgICAgICAgICAgdmFyIGNlciA9IGNlcnRjdHguRGVyZWYodGhpcy5fbWFyc2hhbC5Qb2ludGVyU2l6ZSwgdGhpcy5fbWFyc2hhbC5Qb2ludGVyU2l6ZSkuRGVyZWYoY2VydGN0eC5EZXJlZih0aGlzLl9tYXJzaGFsLlBvaW50ZXJTaXplICogMiwgNCkudG9CdWZmZXIoKS5yZWFkVUludDMyTEUoKSkudG9CdWZmZXIoKTsKICAgICAgICAgICAgdmFyIGZvdW5kY2VydCA9IHJlcXVpcmUoJ3RscycpLmxvYWRDZXJ0aWZpY2F0ZSh7IGNlcjogY2VyIH0pOwogICAgICAgICAgICByZXR1cm4gKGZvdW5kY2VydCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHRocm93ICgnTm90IEZvdW5kJyk7CiAgICAgICAgfQoKICAgIH07Cn0KCm1vZHVsZS5leHBvcnRzID0gbmV3IGNlcnRzdG9yZSgpOwoK', 'base64').toString());"); // win-bcd is used to configure booting in Safe-Mode. refer to modules/win-bcd.js - duk_peval_string_noresult(ctx, "addModule('win-bcd', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8NCg0KZnVuY3Rpb24gZ2V0S2V5cygpDQp7DQogICAgdmFyIHJldCA9IHt9Ow0KICAgIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxiY2RlZGl0LmV4ZSIsIFsnYmNkZWRpdCcsICcvZW51bScsICd7Y3VycmVudH0nXSk7DQogICAgY2hpbGQuc3Rkb3V0LnN0ciA9ICcnOyBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB0aGlzLnN0ciArPSBjLnRvU3RyaW5nKCk7IH0pOw0KICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uICgpIHsgfSk7DQogICAgY2hpbGQud2FpdEV4aXQoKTsNCg0KICAgIHZhciBsaW5lcyA9IGNoaWxkLnN0ZG91dC5zdHIudHJpbSgpLnNwbGl0KCdcclxuJyk7DQogICAgbGluZXMuc2hpZnQoKTsgbGluZXMuc2hpZnQoKTsNCg0KICAgIGZvciAodmFyIGkgaW4gbGluZXMpDQogICAgew0KICAgICAgICB2YXIgdG9rZW5zID0gbGluZXNbaV0uc3BsaXQoJyAnKTsNCiAgICAgICAgdmFyIGtleSA9IHRva2Vucy5zaGlmdCgpOw0KICAgICAgICB2YXIgdmFsdWUgPSB0b2tlbnMuam9pbignICcpLnRyaW0oKTsNCiAgICAgICAgcmV0W2tleV0gPSB2YWx1ZTsNCiAgICB9DQogICAgcmV0dXJuIChyZXQpOw0KfQ0KZnVuY3Rpb24gZ2V0S2V5KGtleSkNCnsNCiAgICByZXR1cm4gKHRoaXMuZ2V0S2V5cygpW2tleV0pOw0KfQ0KZnVuY3Rpb24gc2V0S2V5KGtleSwgdmFsdWUpDQp7DQogICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxiY2RlZGl0LmV4ZSIsIFsnYmNkZWRpdCcsICcvc2V0JywgJ3tjdXJyZW50fScsIGtleSwgdmFsdWVdKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKCkgeyB9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KZnVuY3Rpb24gZGVsZXRlS2V5KGtleSkNCnsNCiAgICB2YXIgY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5lbnZbJ3dpbmRpciddICsgIlxcU3lzdGVtMzJcXGJjZGVkaXQuZXhlIiwgWydiY2RlZGl0JywgJy9kZWxldGV2YWx1ZScsICd7Y3VycmVudH0nLCBrZXldKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKCkgeyB9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KDQpmdW5jdGlvbiBlbmFibGVTYWZlTW9kZVNlcnZpY2Uoc2VydmljZU5hbWUpDQp7DQogICAgcmVxdWlyZSgnd2luLXJlZ2lzdHJ5JykuV3JpdGVLZXkocmVxdWlyZSgnd2luLXJlZ2lzdHJ5JykuSEtFWS5Mb2NhbE1hY2hpbmUsICdTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxTYWZlYm9vdFxcTmV0d29ya1xcJyArIHNlcnZpY2VOYW1lLCBudWxsLCAnU2VydmljZScpOw0KfQ0KZnVuY3Rpb24gZGlzYWJsZVNhZmVNb2RlU2VydmljZShzZXJ2aWNlTmFtZSkNCnsNCiAgICB0cnkNCiAgICB7DQogICAgICAgIHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLkRlbGV0ZUtleShyZXF1aXJlKCd3aW4tcmVnaXN0cnknKS5IS0VZLkxvY2FsTWFjaGluZSwgJ1NZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFNhZmVib290XFxOZXR3b3JrXFwnICsgc2VydmljZU5hbWUpOw0KICAgIH0NCiAgICBjYXRjaCh4KQ0KICAgIHsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHJlc3RhcnQoZGVsYXkpDQp7DQogICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxzaHV0ZG93bi5leGUiLCBbJ3NodXRkb3duJywgJy9yJywgJy90JywgZGVsYXkhPW51bGw/ZGVsYXkudG9TdHJpbmcoKTonMCddKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgY29uc29sZS5sb2coYy50b1N0cmluZygpKTt9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KDQptb2R1bGUuZXhwb3J0cyA9DQogICAgew0KICAgICAgICBnZXRLZXlzOiBnZXRLZXlzLCBzZXRLZXk6IHNldEtleSwgZGVsZXRlS2V5OiBkZWxldGVLZXksIGVuYWJsZVNhZmVNb2RlU2VydmljZTogZW5hYmxlU2FmZU1vZGVTZXJ2aWNlLA0KICAgICAgICBkaXNhYmxlU2FmZU1vZGVTZXJ2aWNlOiBkaXNhYmxlU2FmZU1vZGVTZXJ2aWNlLCBnZXRLZXk6IGdldEtleSwgcmVzdGFydDogcmVzdGFydA0KICAgIH07DQoNCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgImJvb3RNb2RlIiwNCiAgICB7DQogICAgICAgIGdldDogZnVuY3Rpb24oKQ0KICAgICAgICB7DQogICAgICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgdiA9IHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLlF1ZXJ5S2V5KHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLkhLRVkuTG9jYWxNYWNoaW5lLCAnU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcU2FmZWJvb3RcXE9wdGlvbicsICdPcHRpb25WYWx1ZScpOw0KICAgICAgICAgICAgICAgIHN3aXRjaCh2KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgnU0FGRV9NT0RFX05FVFdPUksnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgnU0FGRV9NT0RFJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuICh2KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoKHgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuICgnTk9STUFMJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTs=', 'base64').toString());"); + duk_peval_string_noresult(ctx, "addModule('win-bcd', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8NCg0KZnVuY3Rpb24gZ2V0S2V5cygpDQp7DQogICAgdmFyIHJldCA9IHt9Ow0KICAgIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxiY2RlZGl0LmV4ZSIsIFsnYmNkZWRpdCcsICcvZW51bScsICd7Y3VycmVudH0nXSk7DQogICAgY2hpbGQuc3Rkb3V0LnN0ciA9ICcnOyBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB0aGlzLnN0ciArPSBjLnRvU3RyaW5nKCk7IH0pOw0KICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uICgpIHsgfSk7DQogICAgY2hpbGQud2FpdEV4aXQoKTsNCg0KICAgIHZhciBsaW5lcyA9IGNoaWxkLnN0ZG91dC5zdHIudHJpbSgpLnNwbGl0KCdcclxuJyk7DQogICAgbGluZXMuc2hpZnQoKTsgbGluZXMuc2hpZnQoKTsNCg0KICAgIGZvciAodmFyIGkgaW4gbGluZXMpDQogICAgew0KICAgICAgICB2YXIgdG9rZW5zID0gbGluZXNbaV0uc3BsaXQoJyAnKTsNCiAgICAgICAgdmFyIGtleSA9IHRva2Vucy5zaGlmdCgpOw0KICAgICAgICB2YXIgdmFsdWUgPSB0b2tlbnMuam9pbignICcpLnRyaW0oKTsNCiAgICAgICAgcmV0W2tleV0gPSB2YWx1ZTsNCiAgICB9DQogICAgcmV0dXJuIChyZXQpOw0KfQ0KZnVuY3Rpb24gZ2V0S2V5KGtleSkNCnsNCiAgICByZXR1cm4gKHRoaXMuZ2V0S2V5cygpW2tleV0pOw0KfQ0KZnVuY3Rpb24gc2V0S2V5KGtleSwgdmFsdWUpDQp7DQogICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxiY2RlZGl0LmV4ZSIsIFsnYmNkZWRpdCcsICcvc2V0JywgJ3tjdXJyZW50fScsIGtleSwgdmFsdWVdKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKCkgeyB9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KZnVuY3Rpb24gZGVsZXRlS2V5KGtleSkNCnsNCiAgICB2YXIgY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5lbnZbJ3dpbmRpciddICsgIlxcU3lzdGVtMzJcXGJjZGVkaXQuZXhlIiwgWydiY2RlZGl0JywgJy9kZWxldGV2YWx1ZScsICd7Y3VycmVudH0nLCBrZXldKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKCkgeyB9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KDQpmdW5jdGlvbiBlbmFibGVTYWZlTW9kZVNlcnZpY2Uoc2VydmljZU5hbWUpDQp7DQogICAgcmVxdWlyZSgnd2luLXJlZ2lzdHJ5JykuV3JpdGVLZXkocmVxdWlyZSgnd2luLXJlZ2lzdHJ5JykuSEtFWS5Mb2NhbE1hY2hpbmUsICdTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxTYWZlYm9vdFxcTmV0d29ya1xcJyArIHNlcnZpY2VOYW1lLCBudWxsLCAnU2VydmljZScpOw0KfQ0KZnVuY3Rpb24gZGlzYWJsZVNhZmVNb2RlU2VydmljZShzZXJ2aWNlTmFtZSkNCnsNCiAgICB0cnkNCiAgICB7DQogICAgICAgIHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLkRlbGV0ZUtleShyZXF1aXJlKCd3aW4tcmVnaXN0cnknKS5IS0VZLkxvY2FsTWFjaGluZSwgJ1NZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFNhZmVib290XFxOZXR3b3JrXFwnICsgc2VydmljZU5hbWUpOw0KICAgIH0NCiAgICBjYXRjaCh4KQ0KICAgIHsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHJlc3RhcnQoZGVsYXkpDQp7DQogICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICJcXFN5c3RlbTMyXFxzaHV0ZG93bi5leGUiLCBbJ3NodXRkb3duJywgJy9yJywgJy90JywgZGVsYXkhPW51bGw/ZGVsYXkudG9TdHJpbmcoKTonMCddKTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgY29uc29sZS5sb2coYy50b1N0cmluZygpKTt9KTsNCiAgICBjaGlsZC53YWl0RXhpdCgpOw0KfQ0KDQppZiAocmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuUG9pbnRlclNpemUgPT0gNCAmJiByZXF1aXJlKCdvcycpLmFyY2goKSA9PSAneDY0JykNCnsNCiAgICB0aHJvdyAoJ3dpbi1iY2Qgb24gYSA2NCBiaXQgUGxhdGZvcm0gY2FuIG9ubHkgYmUgYWNjZXNzZWQgZnJvbSBhIDY0IGJpdCBwcm9jZXNzJyk7DQp9DQplbHNlDQp7DQogICAgbW9kdWxlLmV4cG9ydHMgPQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXRLZXlzOiBnZXRLZXlzLCBzZXRLZXk6IHNldEtleSwgZGVsZXRlS2V5OiBkZWxldGVLZXksIGVuYWJsZVNhZmVNb2RlU2VydmljZTogZW5hYmxlU2FmZU1vZGVTZXJ2aWNlLA0KICAgICAgICAgICAgZGlzYWJsZVNhZmVNb2RlU2VydmljZTogZGlzYWJsZVNhZmVNb2RlU2VydmljZSwgZ2V0S2V5OiBnZXRLZXksIHJlc3RhcnQ6IHJlc3RhcnQNCiAgICAgICAgfTsNCn0NCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgImJvb3RNb2RlIiwNCiAgICB7DQogICAgICAgIGdldDogZnVuY3Rpb24oKQ0KICAgICAgICB7DQogICAgICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgdiA9IHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLlF1ZXJ5S2V5KHJlcXVpcmUoJ3dpbi1yZWdpc3RyeScpLkhLRVkuTG9jYWxNYWNoaW5lLCAnU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcU2FmZWJvb3RcXE9wdGlvbicsICdPcHRpb25WYWx1ZScpOw0KICAgICAgICAgICAgICAgIHN3aXRjaCh2KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgnU0FGRV9NT0RFX05FVFdPUksnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgnU0FGRV9NT0RFJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuICh2KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoKHgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuICgnTk9STUFMJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTs=', 'base64').toString());"); #endif #ifdef _FREEBSD diff --git a/modules/win-bcd.js b/modules/win-bcd.js index 716fded..6fae772 100644 --- a/modules/win-bcd.js +++ b/modules/win-bcd.js @@ -76,12 +76,18 @@ function restart(delay) child.waitExit(); } -module.exports = - { - getKeys: getKeys, setKey: setKey, deleteKey: deleteKey, enableSafeModeService: enableSafeModeService, - disableSafeModeService: disableSafeModeService, getKey: getKey, restart: restart - }; - +if (require('_GenericMarshal').PointerSize == 4 && require('os').arch() == 'x64') +{ + throw ('win-bcd on a 64 bit Platform can only be accessed from a 64 bit process'); +} +else +{ + module.exports = + { + getKeys: getKeys, setKey: setKey, deleteKey: deleteKey, enableSafeModeService: enableSafeModeService, + disableSafeModeService: disableSafeModeService, getKey: getKey, restart: restart + }; +} Object.defineProperty(module.exports, "bootMode", { get: function()