diff --git a/frontend/App.js b/frontend/App.js index 986c824..b457b9f 100644 --- a/frontend/App.js +++ b/frontend/App.js @@ -1,13 +1,13 @@ /** - Define your enyo/Application kind in this file. + Define your enyo/Application kind in this file. */ var - kind = require('enyo/kind'), - Application = require('enyo/Application'), - MainView = require('./views/MainView'); + kind = require('enyo/kind'), + Application = require('enyo/Application'), + MainView = require('./views/MainView'); module.exports = kind({ - kind: Application, - view: MainView + kind: Application, + view: MainView }); diff --git a/frontend/index.js b/frontend/index.js index 31a388c..03908f3 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -1,7 +1,7 @@ /** - Instantiate your enyo/Application kind in this file. Note, application - rendering should be deferred until the DOM is ready by wrapping it in a - call to ready(). + Instantiate your enyo/Application kind in this file. Note, application + rendering should be deferred until the DOM is ready by wrapping it in a + call to ready(). */ var diff --git a/frontend/main.js b/frontend/main.js index 3dd6985..66f025e 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -1,235 +1,235 @@ var appinfos = [ - { - id: "com.example.foobar", - title: "Example Name", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.blah", - title: "Blah Blah", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.abc", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.def", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.123", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.456", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.789", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.zed", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - }, - { - id: "com.example.bbbb", - title: "Foo Bar", - appDescription: "App Description", - vendor: "Example Vendor", - version: "v0.01", - icon: "http://placekitten.com/64/64" - } + { + id: "com.example.foobar", + title: "Example Name", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.blah", + title: "Blah Blah", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.abc", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.def", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.123", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.456", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.789", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.zed", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + }, + { + id: "com.example.bbbb", + title: "Foo Bar", + appDescription: "App Description", + vendor: "Example Vendor", + version: "v0.01", + icon: "http://placekitten.com/64/64" + } ]; function getRandomInt(max) { - return Math.floor(Math.random() * Math.floor(max)); + return Math.floor(Math.random() * Math.floor(max)); } function randFloat(a, b) { - return a + (Math.random()*(b-a)); + return a + (Math.random()*(b-a)); } function do_app_modal(appinfo) { - window.location.hash = "#appinfo-" + appinfo.id; - render_appinfo_modal_dom(appinfo); + window.location.hash = "#appinfo-" + appinfo.id; + render_appinfo_modal_dom(appinfo); } function close_app_modal() { - var modal_container = document.getElementsByClassName("app-modal")[0]; - modal_container.innerHTML = ""; - modal_container.style.display = "none"; + var modal_container = document.getElementsByClassName("app-modal")[0]; + modal_container.innerHTML = ""; + modal_container.style.display = "none"; } function render_appinfo_modal_dom(appinfo) { - var modal_container = document.getElementsByClassName("app-modal")[0]; - modal_container.innerHTML = ""; - - modal_container.addEventListener("click", function(e) { - if (e.target == modal_container) { - close_app_modal(); - } - }); - - var modal_div = document.createElement("div"); - modal_container.appendChild(modal_div); - - var modal_header = document.createElement("div"); - modal_header.classList.add("app-modal-header"); - modal_div.appendChild(modal_header); - - var app_img = document.createElement("img"); - app_img.src = appinfo.icon; - modal_header.appendChild(app_img); - - var app_butt = document.createElement("button"); - app_butt.addEventListener("click", function() { - alert("TODO: install app :P"); - logmsg("Error logging test: installed " + appinfo.id); - close_app_modal(); // TODO - }); - app_butt.innerText = "Install"; - modal_header.appendChild(app_butt); - - var app_title = document.createElement("h2"); - app_title.innerText = appinfo.title; - modal_header.appendChild(app_title) - - var app_author = document.createElement("p"); - app_author.innerHTML = "Developer:" - app_author.insertAdjacentText("beforeend", appinfo.vendor); - modal_header.appendChild(app_author); - - var app_version = document.createElement("p"); - app_version.innerHTML = "Version:" - app_version.insertAdjacentText("beforeend", appinfo.version); - modal_header.appendChild(app_version); - - var desctitle = document.createElement("h3"); - desctitle.innerText = "Description:"; - modal_div.appendChild(desctitle); - - var desc = document.createElement("p"); - desc.innerText = appinfo.appDescription; - modal_div.appendChild(desc); - - modal_container.style.display = "block"; - console.log("foo"); + var modal_container = document.getElementsByClassName("app-modal")[0]; + modal_container.innerHTML = ""; + + modal_container.addEventListener("click", function(e) { + if (e.target == modal_container) { + close_app_modal(); + } + }); + + var modal_div = document.createElement("div"); + modal_container.appendChild(modal_div); + + var modal_header = document.createElement("div"); + modal_header.classList.add("app-modal-header"); + modal_div.appendChild(modal_header); + + var app_img = document.createElement("img"); + app_img.src = appinfo.icon; + modal_header.appendChild(app_img); + + var app_butt = document.createElement("button"); + app_butt.addEventListener("click", function() { + alert("TODO: install app :P"); + logmsg("Error logging test: installed " + appinfo.id); + close_app_modal(); // TODO + }); + app_butt.innerText = "Install"; + modal_header.appendChild(app_butt); + + var app_title = document.createElement("h2"); + app_title.innerText = appinfo.title; + modal_header.appendChild(app_title) + + var app_author = document.createElement("p"); + app_author.innerHTML = "Developer:" + app_author.insertAdjacentText("beforeend", appinfo.vendor); + modal_header.appendChild(app_author); + + var app_version = document.createElement("p"); + app_version.innerHTML = "Version:" + app_version.insertAdjacentText("beforeend", appinfo.version); + modal_header.appendChild(app_version); + + var desctitle = document.createElement("h3"); + desctitle.innerText = "Description:"; + modal_div.appendChild(desctitle); + + var desc = document.createElement("p"); + desc.innerText = appinfo.appDescription; + modal_div.appendChild(desc); + + modal_container.style.display = "block"; + console.log("foo"); } function render_appinfo_dom(appinfo) { - var card = document.createElement("li"); - var cardbutt = document.createElement("button"); - - cardbutt.addEventListener("click", function(e) { - do_app_modal(appinfo); - }); - - var cardimg = document.createElement("img"); - cardimg.src = appinfo.icon; - cardbutt.appendChild(cardimg); - - var cardtitle = document.createElement("h3"); - cardtitle.innerText = appinfo.title; - - var cardauthor = document.createElement("span"); - cardauthor.innerHTML = " — "; - cardauthor.innerText += appinfo.vendor; - cardtitle.appendChild(cardauthor); - - cardbutt.appendChild(cardtitle); - - var carddesc = document.createElement("p"); - carddesc.innerText = appinfo.appDescription; - cardbutt.appendChild(carddesc); - - card.appendChild(cardbutt) - return card; + var card = document.createElement("li"); + var cardbutt = document.createElement("button"); + + cardbutt.addEventListener("click", function(e) { + do_app_modal(appinfo); + }); + + var cardimg = document.createElement("img"); + cardimg.src = appinfo.icon; + cardbutt.appendChild(cardimg); + + var cardtitle = document.createElement("h3"); + cardtitle.innerText = appinfo.title; + + var cardauthor = document.createElement("span"); + cardauthor.innerHTML = " — "; + cardauthor.innerText += appinfo.vendor; + cardtitle.appendChild(cardauthor); + + cardbutt.appendChild(cardtitle); + + var carddesc = document.createElement("p"); + carddesc.innerText = appinfo.appDescription; + cardbutt.appendChild(carddesc); + + card.appendChild(cardbutt) + return card; } function render_applist() { - var applist = document.getElementsByClassName("applist")[0].children[0]; - var query = document.getElementsByClassName("searchbox")[0].value.toLowerCase();; - applist.innerHTML = ""; - - appinfos.forEach(function(appinfo){ - if (appinfo.title.toLowerCase().includes(query) || appinfo.appDescription.toLowerCase().includes(query)) { - applist.appendChild(render_appinfo_dom(appinfo)); - } - }); + var applist = document.getElementsByClassName("applist")[0].children[0]; + var query = document.getElementsByClassName("searchbox")[0].value.toLowerCase();; + applist.innerHTML = ""; + + appinfos.forEach(function(appinfo){ + if (appinfo.title.toLowerCase().includes(query) || appinfo.appDescription.toLowerCase().includes(query)) { + applist.appendChild(render_appinfo_dom(appinfo)); + } + }); } window.onload = function() { - console.log("loaded"); - - var bubbles = document.getElementsByClassName("bubbles")[0]; - for (var i=0; i<100; i++) { - var bubble = document.createElement("div"); - var scale = randFloat(0.4,1); - bubble.classList.add("bubble"); - bubble.style.left = getRandomInt(1280) + "px"; - bubble.style.animation = "bubbleup "+(randFloat(3,6)/scale)+"s cubic-bezier(.53,.14,.91,.44) infinite, bubblewobble "+randFloat(2,3)+"s ease-in-out infinite"; - bubble.style["animation-delay"] = randFloat(0,3)+"s"; - bubble.style.transform = "scale("+scale+")"; - bubbles.appendChild(bubble); - } - - var searchBox = document.getElementsByClassName("searchbox")[0]; - - searchBox.addEventListener("input", function(e) { - console.log(e.target.value); - render_applist(); - }); - - render_applist(); + console.log("loaded"); + + var bubbles = document.getElementsByClassName("bubbles")[0]; + for (var i=0; i<100; i++) { + var bubble = document.createElement("div"); + var scale = randFloat(0.4,1); + bubble.classList.add("bubble"); + bubble.style.left = getRandomInt(1280) + "px"; + bubble.style.animation = "bubbleup "+(randFloat(3,6)/scale)+"s cubic-bezier(.53,.14,.91,.44) infinite, bubblewobble "+randFloat(2,3)+"s ease-in-out infinite"; + bubble.style["animation-delay"] = randFloat(0,3)+"s"; + bubble.style.transform = "scale("+scale+")"; + bubbles.appendChild(bubble); + } + + var searchBox = document.getElementsByClassName("searchbox")[0]; + + searchBox.addEventListener("input", function(e) { + console.log(e.target.value); + render_applist(); + }); + + render_applist(); } function logmsg(str) { - document.getElementById("log-window").innerText += str + "\n"; + document.getElementById("log-window").innerText += str + "\n"; } window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { - logmsg("[!] JS Error on line " + lineNumber + ": " + errorMsg); - return false; + logmsg("[!] JS Error on line " + lineNumber + ": " + errorMsg); + return false; } window.onhashchange = function() { - if (window.location.hash == "") { - close_app_modal(); - } + if (window.location.hash == "") { + close_app_modal(); + } } diff --git a/services/bin/sampatcher.py b/services/bin/sampatcher.py index d8115ce..38a0fa3 100755 --- a/services/bin/sampatcher.py +++ b/services/bin/sampatcher.py @@ -11,24 +11,24 @@ memfile = open("/proc/%d/mem" % sam_pid, "w+") for mapping in open("/proc/%d/maps" % sam_pid, "r").readlines(): - start_addr, end_addr, perms = re.match(r"([0-9a-f]+)\-([0-9a-f]+)\s(\S+)\s", mapping).groups() - if not perms.startswith("r"): - continue - start_addr = int(start_addr, 16) - end_addr = int(end_addr, 16) - map_size = end_addr - start_addr - - memfile.seek(start_addr) - buf = memfile.read(map_size) - - if TARGET_STRING in buf: - print("Found target string!") - addr = start_addr + buf.index(TARGET_STRING) - memfile.seek(addr) - memfile.write(REPLACEMENT_STRING) - memfile.close() - print("Replaced target string!") - break + start_addr, end_addr, perms = re.match(r"([0-9a-f]+)\-([0-9a-f]+)\s(\S+)\s", mapping).groups() + if not perms.startswith("r"): + continue + start_addr = int(start_addr, 16) + end_addr = int(end_addr, 16) + map_size = end_addr - start_addr + + memfile.seek(start_addr) + buf = memfile.read(map_size) + + if TARGET_STRING in buf: + print("Found target string!") + addr = start_addr + buf.index(TARGET_STRING) + memfile.seek(addr) + memfile.write(REPLACEMENT_STRING) + memfile.close() + print("Replaced target string!") + break else: - print("ERROR: Failed to find target string") + print("ERROR: Failed to find target string") diff --git a/tools/doas/doas.c b/tools/doas/doas.c index 6fd2dc9..41133a9 100644 --- a/tools/doas/doas.c +++ b/tools/doas/doas.c @@ -9,26 +9,26 @@ int main(int argc, char *argv[], char *envp[]) printf("USAGE: %s uid gid command\n", argv[0]); return -1; } - + uid_t uid = atoi(argv[1]); uid_t gid = atoi(argv[2]); - + // Break out of jail, if we're in one if (chroot("/proc/1/root/") != 0) { perror("doas: chroot"); return -1; } - + if (setresgid(gid, gid, gid) != 0) { perror("doas: setresgid"); return -1; } - + if (setresuid(uid, uid, uid) != 0) { perror("doas: setresuid"); return -1; } - + execve(argv[3], &argv[3], envp); perror("doas: execve"); // execve only returns on error return -1;