@@ -11,6 +11,7 @@ package main
11
11
//go:generate depstubber -vendor go.uber.org/zap Logger,SugaredLogger NewProduction
12
12
13
13
import (
14
+ "bytes"
14
15
"fmt"
15
16
"log"
16
17
"net/http"
@@ -384,20 +385,35 @@ func handlerGood3(req *http.Request) {
384
385
replacer := strings .NewReplacer ("\n " , "" , "\r " , "" )
385
386
log .Printf ("user %s logged in.\n " , replacer .Replace (username ))
386
387
log .Printf ("user %s logged in.\n " , replacerLocal1 (username ))
388
+ log .Printf ("user %s logged in.\n " , replacerLocal2 (username ))
387
389
log .Printf ("user %s logged in.\n " , replacerGlobal1 (username ))
390
+ log .Printf ("user %s logged in.\n " , replacerGlobal2 (username ))
388
391
}
389
392
390
393
func replacerLocal1 (s string ) string {
391
394
replacer := strings .NewReplacer ("\n " , "" , "\r " , "" )
392
395
return replacer .Replace (s )
393
396
}
394
397
398
+ func replacerLocal2 (s string ) string {
399
+ replacer := strings .NewReplacer ("\n " , "" , "\r " , "" )
400
+ buf := new (bytes.Buffer )
401
+ replacer .WriteString (buf , s )
402
+ return buf .String ()
403
+ }
404
+
395
405
var globalReplacer = strings .NewReplacer ("\n " , "" , "\r " , "" )
396
406
397
407
func replacerGlobal1 (s string ) string {
398
408
return globalReplacer .Replace (s )
399
409
}
400
410
411
+ func replacerGlobal2 (s string ) string {
412
+ buf := new (bytes.Buffer )
413
+ globalReplacer .WriteString (buf , s )
414
+ return buf .String ()
415
+ }
416
+
401
417
// GOOD: User-provided values formatted using a %q directive, which escapes newlines
402
418
func handlerGood4 (req * http.Request , ctx * goproxy.ProxyCtx ) {
403
419
username := req .URL .Query ()["username" ][0 ]
0 commit comments