From cee6bc6b5d124b467b60ad45f5d2774fbb847d1d Mon Sep 17 00:00:00 2001 From: meozky <19809896+meozky@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:52:20 +0800 Subject: [PATCH] fix(terabox): slice out of range (close #4858 in #4860) --- drivers/terabox/util.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/terabox/util.go b/drivers/terabox/util.go index d0b10e77..9b1f5fd5 100644 --- a/drivers/terabox/util.go +++ b/drivers/terabox/util.go @@ -3,15 +3,16 @@ package terbox import ( "encoding/base64" "fmt" - "github.com/alist-org/alist/v3/drivers/base" - "github.com/alist-org/alist/v3/internal/model" - "github.com/alist-org/alist/v3/pkg/utils" - "github.com/go-resty/resty/v2" "net/http" "net/url" "strconv" "strings" "time" + + "github.com/alist-org/alist/v3/drivers/base" + "github.com/alist-org/alist/v3/internal/model" + "github.com/alist-org/alist/v3/pkg/utils" + "github.com/go-resty/resty/v2" ) func (d *Terabox) request(furl string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) { @@ -139,6 +140,11 @@ func (d *Terabox) linkOfficial(file model.Obj, args model.LinkArgs) (*model.Link if err != nil { return nil, err } + + if len(resp.Dlink) == 0 { + return nil, fmt.Errorf("fid %s no dlink found, errno: %d", file.GetID(), resp.Errno) + } + res, err := base.NoRedirectClient.R().SetHeader("Cookie", d.Cookie).SetHeader("User-Agent", base.UserAgent).Get(resp.Dlink[0].Dlink) if err != nil { return nil, err