Replace string concatenation in a loop by strings.Builder

This commit is contained in:
Andrii Kushch
2026-01-06 19:20:09 +01:00
parent 2548b9e819
commit da088a54c4
2 changed files with 32 additions and 14 deletions
+16 -7
View File
@@ -162,7 +162,8 @@ func (s *GobusterGCS) ProcessWord(ctx context.Context, word string, progress *li
return nil, nil // nolint:nilnil
}
extraStr := ""
var extraStrBuilder strings.Builder
if s.options.ShowFiles {
// get status
var result map[string]interface{}
@@ -178,7 +179,10 @@ func (s *GobusterGCS) ProcessWord(ctx context.Context, word string, progress *li
if err != nil {
return nil, fmt.Errorf("could not parse error json: %w", err)
}
extraStr = fmt.Sprintf("Error: %s (%d)", gcsError.Error.Message, gcsError.Error.Code)
_, err = fmt.Fprintf(&extraStrBuilder, "Error: %s (%d)", gcsError.Error.Message, gcsError.Error.Code)
if err != nil {
return nil, fmt.Errorf("fmt.Fprintf to strings.Builder failed: %w", err)
}
} else if v, exist := result["kind"]; exist && v == "storage#objects" {
// https://cloud.google.com/storage/docs/json_api/v1/status-codes
// bucket listing enabled
@@ -187,18 +191,23 @@ func (s *GobusterGCS) ProcessWord(ctx context.Context, word string, progress *li
if err != nil {
return nil, fmt.Errorf("could not parse result json: %w", err)
}
extraStr = "Bucket Listing enabled: "
for _, x := range gcsListing.Items {
extraStr += fmt.Sprintf("%s (%sb), ", x.Name, x.Size)
extraStrBuilder.WriteString("Bucket Listing enabled: ")
for i, x := range gcsListing.Items {
if i > 0 {
extraStrBuilder.WriteString(", ")
}
_, err := fmt.Fprintf(&extraStrBuilder, "%s (%sb), ", x.Name, x.Size)
if err != nil {
return nil, fmt.Errorf("fmt.Fprintf to strings.Builder failed: %w", err)
}
}
extraStr = strings.TrimRight(extraStr, ", ")
}
}
r := Result{
Found: found,
BucketName: word,
Status: extraStr,
Status: extraStrBuilder.String(),
}
return r, nil
+16 -7
View File
@@ -160,7 +160,8 @@ func (s *GobusterS3) ProcessWord(ctx context.Context, word string, progress *lib
return nil, nil // nolint:nilnil
}
extraStr := ""
var extraStrBuilder strings.Builder
if s.options.ShowFiles {
// get status
if bytes.Contains(body, []byte("<Error>")) {
@@ -170,7 +171,10 @@ func (s *GobusterS3) ProcessWord(ctx context.Context, word string, progress *lib
return nil, fmt.Errorf("could not parse error xml: %w", err)
}
// https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList
extraStr = fmt.Sprintf("Error: %s (%s)", awsError.Message, awsError.Code)
_, err = fmt.Fprintf(&extraStrBuilder, "Error: %s (%s)", awsError.Message, awsError.Code)
if err != nil {
return nil, fmt.Errorf("fmt.Fprintf to strings.Builder failed: %w", err)
}
} else if bytes.Contains(body, []byte("<ListBucketResult ")) {
// bucket listing enabled
awsListing := AWSListing{}
@@ -178,18 +182,23 @@ func (s *GobusterS3) ProcessWord(ctx context.Context, word string, progress *lib
if err != nil {
return nil, fmt.Errorf("could not parse result xml: %w", err)
}
extraStr = "Bucket Listing enabled: "
for _, x := range awsListing.Contents {
extraStr += fmt.Sprintf("%s (%db), ", x.Key, x.Size)
extraStrBuilder.WriteString("Bucket Listing enabled: ")
for i, x := range awsListing.Contents {
if i > 0 {
extraStrBuilder.WriteString(", ")
}
_, err := fmt.Fprintf(&extraStrBuilder, "%s (%db)", x.Key, x.Size)
if err != nil {
return nil, fmt.Errorf("fmt.Fprintf to strings.Builder failed: %w", err)
}
}
extraStr = strings.TrimRight(extraStr, ", ")
}
}
r := Result{
Found: found,
BucketName: word,
Status: extraStr,
Status: extraStrBuilder.String(),
}
return r, nil