From 01f2b2089b740c843e1b1a92a5db51243d075c25 Mon Sep 17 00:00:00 2001 From: Claudio Costa Date: Wed, 20 Oct 2021 14:52:48 +0200 Subject: [PATCH] Explicitly handle values in audit type conversion (#18768) --- model/auditconv.go | 40 ++++++++++++++++++++++++++++++++++++++++ model/auditconv_test.go | 3 ++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/model/auditconv.go b/model/auditconv.go index 38b4381e9f..db46d394f4 100644 --- a/model/auditconv.go +++ b/model/auditconv.go @@ -15,44 +15,84 @@ func AuditModelTypeConv(val interface{}) (newVal interface{}, converted bool) { switch v := val.(type) { case *Channel: return newAuditChannel(v), true + case Channel: + return newAuditChannel(&v), true case *Team: return newAuditTeam(v), true + case Team: + return newAuditTeam(&v), true case *User: return newAuditUser(v), true + case User: + return newAuditUser(&v), true case *Command: return newAuditCommand(v), true + case Command: + return newAuditCommand(&v), true case *CommandArgs: return newAuditCommandArgs(v), true + case CommandArgs: + return newAuditCommandArgs(&v), true case *Bot: return newAuditBot(v), true + case Bot: + return newAuditBot(&v), true case *ChannelModerationPatch: return newAuditChannelModerationPatch(v), true + case ChannelModerationPatch: + return newAuditChannelModerationPatch(&v), true case *Emoji: return newAuditEmoji(v), true + case Emoji: + return newAuditEmoji(&v), true case *FileInfo: return newAuditFileInfo(v), true + case FileInfo: + return newAuditFileInfo(&v), true case *Group: return newAuditGroup(v), true + case Group: + return newAuditGroup(&v), true case *Job: return newAuditJob(v), true + case Job: + return newAuditJob(&v), true case *OAuthApp: return newAuditOAuthApp(v), true + case OAuthApp: + return newAuditOAuthApp(&v), true case *Post: return newAuditPost(v), true + case Post: + return newAuditPost(&v), true case *Role: return newAuditRole(v), true + case Role: + return newAuditRole(&v), true case *Scheme: return newAuditScheme(v), true + case Scheme: + return newAuditScheme(&v), true case *SchemeRoles: return newAuditSchemeRoles(v), true + case SchemeRoles: + return newAuditSchemeRoles(&v), true case *Session: return newAuditSession(v), true + case Session: + return newAuditSession(&v), true case *IncomingWebhook: return newAuditIncomingWebhook(v), true + case IncomingWebhook: + return newAuditIncomingWebhook(&v), true case *OutgoingWebhook: return newAuditOutgoingWebhook(v), true + case OutgoingWebhook: + return newAuditOutgoingWebhook(&v), true case *RemoteCluster: return newRemoteCluster(v), true + case RemoteCluster: + return newRemoteCluster(&v), true } return val, false } diff --git a/model/auditconv_test.go b/model/auditconv_test.go index 5d2128c018..7a9a9298ef 100644 --- a/model/auditconv_test.go +++ b/model/auditconv_test.go @@ -37,7 +37,8 @@ func TestAuditModelTypeConv(t *testing.T) { {name: "int array", args: args{val: []int{77, 68}}, wantConverted: false, wantNewVal: []int{77, 68}}, {name: "struct pointer value", args: args{val: sample}, wantConverted: false, wantNewVal: sample}, {name: "struct pointer array", args: args{val: sampleArr}, wantConverted: false, wantNewVal: sampleArr}, - {name: "model user", args: args{val: user}, wantConverted: true, wantNewVal: "XXX"}, + {name: "model user pointer", args: args{val: user}, wantConverted: true, wantNewVal: "XXX"}, + {name: "model user value", args: args{val: *user}, wantConverted: true, wantNewVal: "XXX"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {