1
0
mirror of https://github.com/rclone/rclone.git synced 2025-12-17 08:43:19 +00:00

Compare commits

...

1 Commits

View File

@@ -704,11 +704,20 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) {
switch { switch {
case itm.T == FOLDER || itm.T == FILE: case itm.T == FOLDER || itm.T == FILE:
args := strings.Split(itm.Key, ":") 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 { switch {
// File or folder owned by current user // File or folder owned by current user
case args[0] == itm.User: case itemUser == itm.User:
buf, err := base64urldecode(args[1]) buf, err := base64urldecode(itemKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -736,7 +745,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) {
} }
m.FS.skmap[itm.Hash] = itm.SKey m.FS.skmap[itm.Hash] = itm.SKey
buf, err := base64urldecode(args[1]) buf, err := base64urldecode(itemKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -750,7 +759,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) {
} }
// Shared file // Shared file
default: default:
k := m.FS.skmap[args[0]] k := m.FS.skmap[itemUser]
b, err := base64urldecode(k) b, err := base64urldecode(k)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -763,7 +772,7 @@ func (m *Mega) addFSNode(itm FSNode) (*Node, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
buf, err := base64urldecode(args[1]) buf, err := base64urldecode(itemKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }