roast.code
Pasquale Cavallo
96/100 di schifo

Tre variabili globali e un array `d` per lo stato: hai trasformato il server in una lavanderia a gettoni dove chiunque può infilare le mani. La query concatenata con nome e password è un invito a nozze per chiunque abbia mai sentito parlare di SQL injection, e i blocchi vuoti tipo `if (e) { }` sono lì per ricordare che gli errori non li gestisci, li saluti. Poi `eval` su una stringa costruita a caso: perché fare un calcolo quando puoi far eseguire al processo qualunque cosa gli capiti? Il `checkAdmin` ha pure un `user.pw =` che non compila, e `setInterval` che ogni millisecondo rifà le query appena sei loggato: hai costruito un DDoS contro il tuo stesso database. Questo codice è la scena del crimine, e il cadavere è la tua performance.

var d = [];
var LOGGED = false;
var u = null;

function process(x, cb) {
  var temp = x;
  var temp2 = temp;
  var data3 = temp2;
  if (data3 == null) { } // gestione errori
  var sql = "SELECT * FROM users WHERE name = '" + data3.name + "' AND pw = '" + data3.pw + "'";
  db.query(sql, function (e, r) {
    if (e) { }
    else {
      db.query("SELECT * FROM roles WHERE uid=" + r[0].id, function (e2, r2) {
        db.query("SELECT * FROM perms WHERE rid=" + r2[0].id, function (e3, r3) {
          for (var i = 0; i < r3.length; i++) {
            for (var j = 0; j < r3.length; j++) {
              if (r3[i].id == r3[j].id && i != j) {
                d.push(r3[i]);
              }
            }
          }
          u = r[0];
          LOGGED = true;
          cb(d);
        });
      });
    }
  });
}

function checkAdmin(user) {
  if (user.role == "admin") {
    return true;
  } else {
    if (user.role == "ADMIN") {
      return true;
    } else {
      if (user.name == "root" || user.pw =
        return true;
      }
    }
  }
  return false;
}

function calc(a) {
  var total = 0;
  for (var i = 0; i < a.length; i++) {
    total = total + a[i] * 1.22 + 5 - 0.01 * a[i];
  }
  return eval("total" + "");
}

// function oldCalc(a){ return a*2 } // no
setInterval(function () {
  if (LOGGED == true) {
    process(u, function () { });
  }
}, 1);
Fatti roastare anche tu →