1+ /* eslint-disable no-proto */
12'use strict' ;
23const common = require ( '../common' ) ;
34
@@ -7,8 +8,12 @@ if (!common.hasCrypto)
78const { strictEqual, deepStrictEqual } = require ( 'assert' ) ;
89const { translatePeerCertificate } = require ( '_tls_common' ) ;
910
10- const certString = 'A=1\nB=2\nC=3' ;
11- const certObject = { A : '1' , B : '2' , C : '3' } ;
11+ const certString = '__proto__=42\nA=1\nB=2\nC=3' ;
12+ const certObject = Object . create ( null ) ;
13+ certObject . __proto__ = '42' ;
14+ certObject . A = '1' ;
15+ certObject . B = '2' ;
16+ certObject . C = '3' ;
1217
1318strictEqual ( translatePeerCertificate ( null ) , null ) ;
1419strictEqual ( translatePeerCertificate ( undefined ) , null ) ;
@@ -19,14 +24,14 @@ strictEqual(translatePeerCertificate(1), 1);
1924deepStrictEqual ( translatePeerCertificate ( { } ) , { } ) ;
2025
2126deepStrictEqual ( translatePeerCertificate ( { issuer : '' } ) ,
22- { issuer : { } } ) ;
27+ { issuer : Object . create ( null ) } ) ;
2328deepStrictEqual ( translatePeerCertificate ( { issuer : null } ) ,
2429 { issuer : null } ) ;
2530deepStrictEqual ( translatePeerCertificate ( { issuer : certString } ) ,
2631 { issuer : certObject } ) ;
2732
2833deepStrictEqual ( translatePeerCertificate ( { subject : '' } ) ,
29- { subject : { } } ) ;
34+ { subject : Object . create ( null ) } ) ;
3035deepStrictEqual ( translatePeerCertificate ( { subject : null } ) ,
3136 { subject : null } ) ;
3237deepStrictEqual ( translatePeerCertificate ( { subject : certString } ) ,
@@ -47,9 +52,18 @@ deepStrictEqual(
4752}
4853
4954deepStrictEqual ( translatePeerCertificate ( { infoAccess : '' } ) ,
50- { infoAccess : { } } ) ;
55+ { infoAccess : Object . create ( null ) } ) ;
5156deepStrictEqual ( translatePeerCertificate ( { infoAccess : null } ) ,
5257 { infoAccess : null } ) ;
53- deepStrictEqual (
54- translatePeerCertificate ( { infoAccess : 'OCSP - URI:file:///etc/passwd' } ) ,
55- { infoAccess : { 'OCSP - URI' : [ 'file:///etc/passwd' ] } } ) ;
58+ {
59+ const input =
60+ '__proto__:mostly harmless\n' +
61+ 'hasOwnProperty:not a function\n' +
62+ 'OCSP - URI:file:///etc/passwd\n' ;
63+ const expected = Object . create ( null ) ;
64+ expected . __proto__ = [ 'mostly harmless' ] ;
65+ expected . hasOwnProperty = [ 'not a function' ] ;
66+ expected [ 'OCSP - URI' ] = [ 'file:///etc/passwd' ] ;
67+ deepStrictEqual ( translatePeerCertificate ( { infoAccess : input } ) ,
68+ { infoAccess : expected } ) ;
69+ }
0 commit comments