@@ -434,17 +434,19 @@ private module CleverGo {
434434 }
435435
436436 /**
437- * Models an HTTP static content-type setter.
437+ * Models an HTTP static content-type header setter.
438438 */
439- private class StaticContentTypeSetter extends HTTP:: HeaderWrite:: Range , DataFlow:: CallNode {
439+ private class StaticContentTypeHeaderSetter extends HTTP:: HeaderWrite:: Range , DataFlow:: CallNode {
440440 DataFlow:: Node receiverNode ;
441- string contentTypeString ;
441+ string valueString ;
442442
443- StaticContentTypeSetter ( ) { setsStaticContentType ( _, _, this , contentTypeString , receiverNode ) }
443+ StaticContentTypeHeaderSetter ( ) {
444+ setsStaticHeaderContentType ( _, _, this , valueString , receiverNode )
445+ }
444446
445447 override string getHeaderName ( ) { result = "content-type" }
446448
447- override string getHeaderValue ( ) { result = contentTypeString }
449+ override string getHeaderValue ( ) { result = valueString }
448450
449451 override DataFlow:: Node getName ( ) { none ( ) }
450452
@@ -453,15 +455,15 @@ private module CleverGo {
453455 override HTTP:: ResponseWriter getResponseWriter ( ) { result .getANode ( ) = receiverNode }
454456 }
455457
456- // Holds for a call that sets the content-type (implicit).
457- private predicate setsStaticContentType (
458- string package , string receiverName , DataFlow:: CallNode contentTypeSetterCall ,
459- string contentTypeString , DataFlow:: Node receiverNode
458+ // Holds for a call that sets the content-type header (implicit).
459+ private predicate setsStaticHeaderContentType (
460+ string package , string receiverName , DataFlow:: CallNode setterCall , string valueString ,
461+ DataFlow:: Node receiverNode
460462 ) {
461463 exists ( string methodName , Method met |
462464 met .hasQualifiedName ( package , receiverName , methodName ) and
463- contentTypeSetterCall = met .getACall ( ) and
464- receiverNode = contentTypeSetterCall .getReceiver ( )
465+ setterCall = met .getACall ( ) and
466+ receiverNode = setterCall .getReceiver ( )
465467 |
466468 package = packagePath ( ) and
467469 (
@@ -470,51 +472,53 @@ private module CleverGo {
470472 (
471473 // signature: func (*Context).SetContentTypeHTML()
472474 methodName = "SetContentTypeHTML" and
473- contentTypeString = "text/html"
475+ valueString = "text/html"
474476 or
475477 // signature: func (*Context).SetContentTypeJSON()
476478 methodName = "SetContentTypeJSON" and
477- contentTypeString = "application/json"
479+ valueString = "application/json"
478480 or
479481 // signature: func (*Context).SetContentTypeText()
480482 methodName = "SetContentTypeText" and
481- contentTypeString = "text/plain"
483+ valueString = "text/plain"
482484 or
483485 // signature: func (*Context).SetContentTypeXML()
484486 methodName = "SetContentTypeXML" and
485- contentTypeString = "text/xml"
487+ valueString = "text/xml"
486488 )
487489 )
488490 )
489491 }
490492
491493 /**
492- * Models an HTTP dynamic content-type setter.
494+ * Models an HTTP dynamic content-type header setter.
493495 */
494- private class DynamicContentTypeSetter extends HTTP:: HeaderWrite:: Range , DataFlow:: CallNode {
496+ private class DynamicContentTypeHeaderSetter extends HTTP:: HeaderWrite:: Range , DataFlow:: CallNode {
495497 DataFlow:: Node receiverNode ;
496- DataFlow:: Node contentTypeNode ;
498+ DataFlow:: Node valueNode ;
497499
498- DynamicContentTypeSetter ( ) { setsDynamicContentType ( _, _, this , contentTypeNode , receiverNode ) }
500+ DynamicContentTypeHeaderSetter ( ) {
501+ setsDynamicHeaderContentType ( _, _, this , valueNode , receiverNode )
502+ }
499503
500504 override string getHeaderName ( ) { result = "content-type" }
501505
502506 override DataFlow:: Node getName ( ) { none ( ) }
503507
504- override DataFlow:: Node getValue ( ) { result = contentTypeNode }
508+ override DataFlow:: Node getValue ( ) { result = valueNode }
505509
506510 override HTTP:: ResponseWriter getResponseWriter ( ) { result .getANode ( ) = receiverNode }
507511 }
508512
509- // Holds for a call that sets the content-type via a parameter.
510- private predicate setsDynamicContentType (
511- string package , string receiverName , DataFlow:: CallNode contentTypeSetterCall ,
512- DataFlow:: Node contentTypeNode , DataFlow :: Node receiverNode
513+ // Holds for a call that sets the content-type header via a parameter.
514+ private predicate setsDynamicHeaderContentType (
515+ string package , string receiverName , DataFlow:: CallNode setterCall , DataFlow :: Node valueNode ,
516+ DataFlow:: Node receiverNode
513517 ) {
514518 exists ( string methodName , Method met |
515519 met .hasQualifiedName ( package , receiverName , methodName ) and
516- contentTypeSetterCall = met .getACall ( ) and
517- receiverNode = contentTypeSetterCall .getReceiver ( )
520+ setterCall = met .getACall ( ) and
521+ receiverNode = setterCall .getReceiver ( )
518522 |
519523 package = packagePath ( ) and
520524 (
@@ -523,7 +527,7 @@ private module CleverGo {
523527 (
524528 // signature: func (*Context).SetContentType(v string)
525529 methodName = "SetContentType" and
526- contentTypeNode = contentTypeSetterCall .getArgument ( 0 )
530+ valueNode = setterCall .getArgument ( 0 )
527531 )
528532 )
529533 )
0 commit comments