File tree Expand file tree Collapse file tree 2 files changed +11
-1
lines changed Expand file tree Collapse file tree 2 files changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -138,7 +138,12 @@ QueryString.escape = function(str) {
138138    } 
139139    // Surrogate pair 
140140    ++ i ; 
141-     c  =  0x10000  +  ( ( ( c  &  0x3FF )  <<  10 )  |  ( str . charCodeAt ( i )  &  0x3FF ) ) ; 
141+     var  c2 ; 
142+     if  ( i  <  str . length ) 
143+       c2  =  str . charCodeAt ( i )  &  0x3FF ; 
144+     else 
145+       throw  new  URIError ( 'URI malformed' ) ; 
146+     c  =  0x10000  +  ( ( ( c  &  0x3FF )  <<  10 )  |  c2 ) ; 
142147    out  +=  hexTable [ 0xF0  |  ( c  >>  18 ) ]  + 
143148           hexTable [ 0x80  |  ( ( c  >>  12 )  &  0x3F ) ]  + 
144149           hexTable [ 0x80  |  ( ( c  >>  6 )  &  0x3F ) ]  + 
Original file line number Diff line number Diff line change @@ -139,6 +139,11 @@ qsWeirdObjects.forEach(function(testCase) {
139139  assert . equal ( testCase [ 1 ] ,  qs . stringify ( testCase [ 0 ] ) ) ; 
140140} ) ; 
141141
142+ // invalid surrogate pair throws URIError 
143+ assert . throws ( function ( )  { 
144+   qs . stringify ( {  foo : '\udc00'  } ) ; 
145+ } ,  URIError ) ; 
146+ 
142147// coerce numbers to string 
143148assert . strictEqual ( 'foo=0' ,  qs . stringify ( {  foo : 0  } ) ) ; 
144149assert . strictEqual ( 'foo=0' ,  qs . stringify ( {  foo : - 0  } ) ) ; 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments