mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-17 03:43:11 -06:00
Previously, all events would come down redacted because the hash checks would fail. They would fail because sjson.DeleteBytes didn't remove keys not used for hashing. This didn't work because of a build tag which included a file which no-oped the index returned. See https://github.com/tidwall/gjson/issues/157 When it's resolved, let's go back to mainline.
35 lines
783 B
Go
35 lines
783 B
Go
//+build appengine js
|
|
|
|
package gjson
|
|
|
|
import (
|
|
"reflect"
|
|
"unsafe"
|
|
)
|
|
|
|
func getBytes(json []byte, path string) Result {
|
|
return Get(string(json), path)
|
|
}
|
|
|
|
// fillIndex finds the position of Raw data and assigns it to the Index field
|
|
// of the resulting value. If the position cannot be found then Index zero is
|
|
// used instead.
|
|
func fillIndex(json string, c *parseContext) {
|
|
if len(c.value.Raw) > 0 && !c.calcd {
|
|
jhdr := *(*reflect.StringHeader)(unsafe.Pointer(&json))
|
|
rhdr := *(*reflect.StringHeader)(unsafe.Pointer(&(c.value.Raw)))
|
|
c.value.Index = int(rhdr.Data - jhdr.Data)
|
|
if c.value.Index < 0 || c.value.Index >= len(json) {
|
|
c.value.Index = 0
|
|
}
|
|
}
|
|
}
|
|
|
|
func stringBytes(s string) []byte {
|
|
return []byte(s)
|
|
}
|
|
|
|
func bytesString(b []byte) string {
|
|
return string(b)
|
|
}
|