Skip to content

Commit

Permalink
ChakraCore fix for servicing release 18-02B: CVE-2018-0840
Browse files Browse the repository at this point in the history
  • Loading branch information
ricobbe authored and pleath committed Feb 13, 2018
1 parent 8a2c373 commit 24c7fa2
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions lib/Runtime/Base/ThreadContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -1635,11 +1635,27 @@ class ThreadContext sealed :
}

// Save and restore implicit flags around the implicit call
struct RestoreFlags
{
ThreadContext * const ctx;
const Js::ImplicitCallFlags flags;
const Js::ImplicitCallFlags savedFlags;

RestoreFlags(ThreadContext *ctx, Js::ImplicitCallFlags flags) :
ctx(ctx),
flags(flags),
savedFlags(ctx->GetImplicitCallFlags())
{
}

~RestoreFlags()
{
ctx->SetImplicitCallFlags(static_cast<Js::ImplicitCallFlags>(savedFlags | flags));
}
};

Js::ImplicitCallFlags saveImplicitCallFlags = this->GetImplicitCallFlags();
Js::Var result = implicitCall();
this->SetImplicitCallFlags((Js::ImplicitCallFlags)(saveImplicitCallFlags | flags));
return result;
RestoreFlags restoreFlags(this, flags);
return implicitCall();
}
bool HasNoSideEffect(Js::RecyclableObject * function) const;
bool HasNoSideEffect(Js::RecyclableObject * function, Js::FunctionInfo::Attributes attr) const;
Expand Down

0 comments on commit 24c7fa2

Please sign in to comment.