mirror of
https://github.com/projectdiscovery/subfinder
synced 2026-06-21 14:05:24 +00:00
Merge pull request #1777 from x-stp/fix/mortal-combat-round-one
fix(sources): hackertarget, intelx, shodan, c99, chinaz control-flow bugs
This commit is contained in:
@@ -55,6 +55,8 @@ func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Se
|
||||
s.requests++
|
||||
resp, err := session.SimpleGet(ctx, searchURL)
|
||||
if err != nil {
|
||||
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}
|
||||
s.errors++
|
||||
session.DiscardHTTPResponse(resp)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -50,32 +50,30 @@ func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Se
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
|
||||
session.DiscardHTTPResponse(resp)
|
||||
|
||||
SubdomainList := jsoniter.Get(body, "Result").Get("ContributingSubdomainList")
|
||||
|
||||
if SubdomainList.ToBool() {
|
||||
_data := []byte(SubdomainList.ToString())
|
||||
for i := 0; i < SubdomainList.Size(); i++ {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
default:
|
||||
}
|
||||
subdomain := jsoniter.Get(_data, i, "DataUrl").ToString()
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case results <- subscraping.Result{Source: s.Name(), Type: subscraping.Subdomain, Value: subdomain}:
|
||||
s.results++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if err != nil {
|
||||
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}
|
||||
s.errors++
|
||||
return
|
||||
}
|
||||
|
||||
SubdomainList := jsoniter.Get(body, "Result").Get("ContributingSubdomainList")
|
||||
if SubdomainList.ValueType() != jsoniter.ArrayValue {
|
||||
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: fmt.Errorf("chinaz: unexpected response shape, missing Result.ContributingSubdomainList")}
|
||||
s.errors++
|
||||
return
|
||||
}
|
||||
|
||||
_data := []byte(SubdomainList.ToString())
|
||||
for i := 0; i < SubdomainList.Size(); i++ {
|
||||
subdomain := jsoniter.Get(_data, i, "DataUrl").ToString()
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case results <- subscraping.Result{Source: s.Name(), Type: subscraping.Subdomain, Value: subdomain}:
|
||||
s.results++
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return results
|
||||
|
||||
@@ -39,8 +39,6 @@ func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Se
|
||||
htSearchUrl = fmt.Sprintf("%s&apikey=%s", htSearchUrl, randomApiKey)
|
||||
}
|
||||
|
||||
htSearchUrl = fmt.Sprintf("%s&apikey=%s", htSearchUrl, randomApiKey)
|
||||
|
||||
s.requests++
|
||||
resp, err := session.SimpleGet(ctx, htSearchUrl)
|
||||
if err != nil {
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"time"
|
||||
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
@@ -131,14 +130,6 @@ func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Se
|
||||
session.DiscardHTTPResponse(resp)
|
||||
return
|
||||
}
|
||||
|
||||
_, err = io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}
|
||||
s.errors++
|
||||
session.DiscardHTTPResponse(resp)
|
||||
return
|
||||
}
|
||||
session.DiscardHTTPResponse(resp)
|
||||
|
||||
status = response.Status
|
||||
|
||||
@@ -60,6 +60,8 @@ func (s *Source) Run(ctx context.Context, domain string, session *subscraping.Se
|
||||
s.requests++
|
||||
resp, err := session.SimpleGet(ctx, searchURL)
|
||||
if err != nil {
|
||||
results <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}
|
||||
s.errors++
|
||||
session.DiscardHTTPResponse(resp)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user