diff --git a/vendor/github.com/t3rm1n4l/go-mega/mega.go b/vendor/github.com/t3rm1n4l/go-mega/mega.go index add7c1234..8e829d6e4 100644 --- a/vendor/github.com/t3rm1n4l/go-mega/mega.go +++ b/vendor/github.com/t3rm1n4l/go-mega/mega.go @@ -704,11 +704,20 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) { switch { case itm.T == FOLDER || itm.T == FILE: args := strings.Split(itm.Key, ":") + if len(args) < 2 { + return nil, fmt.Errorf("not enough : in item.Key: %q", itm.Key) + } + itemUser, itemKey := args[0], args[1] + itemKeyParts := strings.Split(itemKey, "/") + if len(itemKeyParts) >= 2 { + itemKey = itemKeyParts[0] + // the other part is maybe a share key handle? + } switch { // File or folder owned by current user - case args[0] == itm.User: - buf, err := base64urldecode(args[1]) + case itemUser == itm.User: + buf, err := base64urldecode(itemKey) if err != nil { return nil, err } @@ -736,7 +745,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) { } m.FS.skmap[itm.Hash] = itm.SKey - buf, err := base64urldecode(args[1]) + buf, err := base64urldecode(itemKey) if err != nil { return nil, err } @@ -750,7 +759,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) { } // Shared file default: - k := m.FS.skmap[args[0]] + k := m.FS.skmap[itemUser] b, err := base64urldecode(k) if err != nil { return nil, err @@ -763,7 +772,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) { if err != nil { return nil, err } - buf, err := base64urldecode(args[1]) + buf, err := base64urldecode(itemKey) if err != nil { return nil, err }