ThomasLeister/prosody-filer

Investigate MAC generation / comparison

ThomasLeister opened this issue · 2 comments

There seems to be a bug in Prosody filer which leads to wrong MAC calculation and therefore blocks some uploads once in a while. Re-trying to upload the file solves the issue in most cases. Sometimes more that one retry is needed until successful upload.

I could not recreate the error case so far - it seems to be quite random to me.

Maybe this is related to any race conditions / parallel execution / comparison in the code.

MAC comp is fine, but fileStorePath is not valid if Path begins with "d" after upload/

See example:

package main

import (
	"fmt"
	"strings"
)

const UploadSubDir = "upload/"

func fileStorePath(path string) string {
	fileStorePath := strings.TrimLeft(path, UploadSubDir)
	return fileStorePath
}


func main() {
	fmt.Println(fileStorePath("/upload/532545f-54b3-49b8-82ad-24495955ec95/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=3fee04f56c3c6eeb3f901ed6c56"))
	fmt.Println(fileStorePath("/upload/d808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb"))
	fmt.Println(fileStorePath("/upload/e808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb"))
}

Output:

532545f-54b3-49b8-82ad-24495955ec95/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=3fee04f56c3c6eeb3f901ed6c56
808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb
e808e7416-aa5f-4ba4-8485-c9fecedbef5f/zpFSnXqQRhi5w_s0EH6PVw.jpg?v=1c5eff17ec5c9112903a69beb

(second example string is not same as output - "d" in the beginning is missing. the others are okay).

Investigating ...

Reason for bug: Misuse of TrimLeft() function. Use TrimPrefix() to archieve goal.