@@ -293,6 +293,9 @@ private class StdIStreamIn extends DataFlowFunction, TaintFunction {
293293 // returns reference to `*this`
294294 input .isQualifierAddress ( ) and
295295 output .isReturnValue ( )
296+ or
297+ input .isQualifierObject ( ) and
298+ output .isReturnValueDeref ( )
296299 }
297300
298301 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -319,6 +322,9 @@ private class StdIStreamInNonMember extends DataFlowFunction, TaintFunction {
319322 // flow from first parameter to return value
320323 input .isParameter ( 0 ) and
321324 output .isReturnValue ( )
325+ or
326+ input .isParameterDeref ( 0 ) and
327+ output .isReturnValueDeref ( )
322328 }
323329
324330 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -361,6 +367,9 @@ private class StdIStreamRead extends DataFlowFunction, TaintFunction {
361367 // returns reference to `*this`
362368 input .isQualifierAddress ( ) and
363369 output .isReturnValue ( )
370+ or
371+ input .isQualifierObject ( ) and
372+ output .isReturnValueDeref ( )
364373 }
365374
366375 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -397,6 +406,9 @@ private class StdIStreamPutBack extends DataFlowFunction, TaintFunction {
397406 // returns reference to `*this`
398407 input .isQualifierAddress ( ) and
399408 output .isReturnValue ( )
409+ or
410+ input .isQualifierObject ( ) and
411+ output .isReturnValueDeref ( )
400412 }
401413
402414 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -430,6 +442,9 @@ private class StdIStreamGetLine extends DataFlowFunction, TaintFunction {
430442 // returns reference to `*this`
431443 input .isQualifierAddress ( ) and
432444 output .isReturnValue ( )
445+ or
446+ input .isQualifierObject ( ) and
447+ output .isReturnValueDeref ( )
433448 }
434449
435450 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -453,6 +468,9 @@ private class StdGetLine extends DataFlowFunction, TaintFunction {
453468 // flow from first parameter to return value
454469 input .isParameter ( 0 ) and
455470 output .isReturnValue ( )
471+ or
472+ input .isParameterDeref ( 0 ) and
473+ output .isReturnValueDeref ( )
456474 }
457475
458476 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -486,6 +504,9 @@ private class StdOStreamOut extends DataFlowFunction, TaintFunction {
486504 // returns reference to `*this`
487505 input .isQualifierAddress ( ) and
488506 output .isReturnValue ( )
507+ or
508+ input .isQualifierObject ( ) and
509+ output .isReturnValueDeref ( )
489510 }
490511
491512 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -522,6 +543,9 @@ private class StdOStreamOutNonMember extends DataFlowFunction, TaintFunction {
522543 // flow from first parameter to return value
523544 input .isParameter ( 0 ) and
524545 output .isReturnValue ( )
546+ or
547+ input .isParameterDeref ( 0 ) and
548+ output .isReturnValueDeref ( )
525549 }
526550
527551 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
@@ -605,6 +629,9 @@ private class StdStreamFunction extends DataFlowFunction, TaintFunction {
605629 // returns reference to `*this`
606630 input .isQualifierAddress ( ) and
607631 output .isReturnValue ( )
632+ or
633+ input .isQualifierObject ( ) and
634+ output .isReturnValueDeref ( )
608635 }
609636
610637 override predicate hasTaintFlow ( FunctionInput input , FunctionOutput output ) {
0 commit comments