Skip to content

Commit

Permalink
refactored both math operations that take exactly 2 argumets
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbara2000 committed Aug 5, 2024
1 parent bd5c0f2 commit f44a0c9
Showing 1 changed file with 6 additions and 32 deletions.
38 changes: 6 additions & 32 deletions js/src/jsmath.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,20 +169,9 @@ static bool math_atan2(JSContext* cx, unsigned argc, Value* vp) {

double z = ecmaAtan2(y, x);

// TaintFox
NumberObject *taintedResult = NumberObject::create(cx, 0);
bool isTainted = false;

for (unsigned i = 0; i < args.length(); i++) {
if(isTaintedNumber(args[i])){
isTainted = true;
NumberObject *obj = &args[i].toObject().as<NumberObject>();
taintedResult->setTaint(TaintFlow::append(taintedResult->getTaintFlow(), obj->getTaintFlow()));
}
}
if(isTainted){
taintedResult->setPrimitiveValue(JS::NumberValue(z));
args.rval().setObjectOrNull(taintedResult);
// TaintFox: Taint propagation for math.atan2.
if (isAnyTaintedNumber(args[0], args[1])) {
args.rval().setObject(*NumberObject::createTainted(cx, z, getAnyNumberTaint(args[0], args[1], "Math.atan2")));
return true;
}

Expand Down Expand Up @@ -319,24 +308,9 @@ bool js::math_imul_handle(JSContext* cx, HandleValue lhs, HandleValue rhs,
return false;
}

// TaintFox
NumberObject *taintedResult = NumberObject::create(cx, 0);
bool isTainted = false;

if(isTaintedNumber(lhs)){
isTainted = true;
NumberObject *obj = &lhs.toObject().as<NumberObject>();
taintedResult->setTaint(TaintFlow::append(taintedResult->getTaintFlow(), obj->getTaintFlow()));
}
if(isTaintedNumber(rhs)){
isTainted = true;
NumberObject *obj = &rhs.toObject().as<NumberObject>();
taintedResult->setTaint(TaintFlow::append(taintedResult->getTaintFlow(), obj->getTaintFlow()));
}

if(isTainted){
taintedResult->setPrimitiveValue(JS::NumberValue(WrappingMultiply(a, b)));
res.setObjectOrNull(taintedResult);
// TaintFox: Taint propagation for math.imul.
if (isAnyTaintedNumber(lhs, rhs)) {
res.setObject(*NumberObject::createTainted(cx, WrappingMultiply(a, b), getAnyNumberTaint(lhs, rhs, "Math.imul")));
return true;
}

Expand Down

0 comments on commit f44a0c9

Please sign in to comment.