aboutsummaryrefslogtreecommitdiff
path: root/weed
diff options
context:
space:
mode:
Diffstat (limited to 'weed')
-rw-r--r--weed/storage/needle/needle_parse_upload.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/weed/storage/needle/needle_parse_upload.go b/weed/storage/needle/needle_parse_upload.go
index dcbfd3819..a2c881f92 100644
--- a/weed/storage/needle/needle_parse_upload.go
+++ b/weed/storage/needle/needle_parse_upload.go
@@ -1,6 +1,7 @@
package needle
import (
+ "crypto/md5"
"fmt"
"io"
"io/ioutil"
@@ -79,6 +80,16 @@ func ParseUpload(r *http.Request, sizeLimit int64) (pu *ParsedUpload, e error) {
}
}
}
+
+ if expectedChecksum := r.Header.Get("Content-MD5"); expectedChecksum != "" {
+ h := md5.New()
+ h.Write(pu.UncompressedData)
+ if receivedChecksum := fmt.Sprintf("%x", h.Sum(nil)); expectedChecksum != receivedChecksum {
+ e = fmt.Errorf("Content-MD5 did not match md5 of file data [%s] != [%s]", expectedChecksum, receivedChecksum)
+ return
+ }
+ }
+
return
}