_ convert.Conversion = &SSPIConfig{}
)
+// jsonUnmarshalIgnoreErroneousBOM - due to a bug in xorm (see https://gitea.com/xorm/xorm/pulls/1957) - it's
+// possible that a Blob may gain an unwanted prefix of 0xff 0xfe.
+func jsonUnmarshalIgnoreErroneousBOM(bs []byte, v interface{}) error {
+ json := jsoniter.ConfigCompatibleWithStandardLibrary
+ err := json.Unmarshal(bs, &v)
+ if err != nil && len(bs) > 2 && bs[0] == 0xff && bs[1] == 0xfe {
+ err = json.Unmarshal(bs[2:], &v)
+ }
+ return err
+}
+
// LDAPConfig holds configuration for LDAP login source.
type LDAPConfig struct {
*ldap.Source
// FromDB fills up a LDAPConfig from serialized format.
func (cfg *LDAPConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- err := json.Unmarshal(bs, &cfg)
+ err := jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
if err != nil {
return err
}
// FromDB fills up an SMTPConfig from serialized format.
func (cfg *SMTPConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, cfg)
}
// ToDB exports an SMTPConfig to a serialized format.
// FromDB fills up a PAMConfig from serialized format.
func (cfg *PAMConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, cfg)
}
// ToDB exports a PAMConfig to a serialized format.
// FromDB fills up an OAuth2Config from serialized format.
func (cfg *OAuth2Config) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, cfg)
}
// ToDB exports an SMTPConfig to a serialized format.
// FromDB fills up an SSPIConfig from serialized format.
func (cfg *SSPIConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, cfg)
}
// ToDB exports an SSPIConfig to a serialized format.
// FromDB fills up a UnitConfig from serialized format.
func (cfg *UnitConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
}
// ToDB exports a UnitConfig to a serialized format.
// FromDB fills up a ExternalWikiConfig from serialized format.
func (cfg *ExternalWikiConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
}
// ToDB exports a ExternalWikiConfig to a serialized format.
// FromDB fills up a ExternalTrackerConfig from serialized format.
func (cfg *ExternalTrackerConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
}
// ToDB exports a ExternalTrackerConfig to a serialized format.
// FromDB fills up a IssuesConfig from serialized format.
func (cfg *IssuesConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
}
// ToDB exports a IssuesConfig to a serialized format.
// FromDB fills up a PullRequestsConfig from serialized format.
func (cfg *PullRequestsConfig) FromDB(bs []byte) error {
- json := jsoniter.ConfigCompatibleWithStandardLibrary
- return json.Unmarshal(bs, &cfg)
+ return jsonUnmarshalIgnoreErroneousBOM(bs, &cfg)
}
// ToDB exports a PullRequestsConfig to a serialized format.