Control: tag -1 = trixie confirmed

On Fri, Jul 24, 2026 at 06:58:09PM +0530, Utkarsh Gupta wrote:
> Hi Jonathan,
> 
> On Wed, Jul 15, 2026 at 1:25 AM Jonathan Wiltshire <[email protected]> wrote:
> > JavaScript is not my forte, so I may be up the wrong tree here. But in:
> >
> > | if (key === '__proto__' &&
> > |     !hasOwnProperty.call(object, '__proto__')) {
> > |   return false;
> > }
> >
> > Could it be that `object` here is always the original object, rather than
> > the object at the current point in the path, allowing a later `__proto__`
> > to slip through?
> 
> Interesting point. I was able to probably reproduce what you're
> saying. "object" in that guard is the original root object, it's never
> advanced as the loop walks the path. The hole is specific to __proto__
> when the root carries an own __proto__ key. So only the __proto__
> guard is affected and the impact is deletion, not assignment.
> 
> Note this is upstream's code as shipped in 4.18.0 (commit fe8d32e), so
> it looks like a residual flaw in the upstream fix itself. I'll report
> it upstream: the proper correction is to check ownership against the
> current node during traversal rather than the root, I think?

Yes, if we're right about the issue that sounds the appropriate fix. But I
agree this is better handled upstream.

I'll take the current fixes in case upstream is not responsive in time
before the point release, even though it's a while away yet.


Thanks,

-- 
Jonathan Wiltshire                                      [email protected]
Debian Developer                         http://people.debian.org/~jmw

4096R: 0xD3524C51 / 0A55 B7C5 1223 3942 86EC  74C3 5394 479D D352 4C51
ed25519/0x196418AAEB74C8A1: CA619D65A72A7BADFC96D280196418AAEB74C8A1

Reply via email to