mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Add some checking of channel ID before sending websocket event (#7431)
This commit is contained in:
committed by
George Goldberg
parent
b6fb98a431
commit
600beb5af3
@@ -1168,7 +1168,7 @@ func (a *App) ViewChannel(view *model.ChannelView, userId string, clearPushNotif
|
||||
return result.Err
|
||||
}
|
||||
|
||||
if *utils.Cfg.ServiceSettings.EnableChannelViewedMessages && len(view.ChannelId) > 0 {
|
||||
if *utils.Cfg.ServiceSettings.EnableChannelViewedMessages && model.IsValidId(view.ChannelId) {
|
||||
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_VIEWED, "", "", userId, nil)
|
||||
message.Add("channel_id", view.ChannelId)
|
||||
go Publish(message)
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
goi18n "github.com/nicksnyder/go-i18n/i18n"
|
||||
"github.com/pborman/uuid"
|
||||
@@ -492,3 +493,17 @@ func IsValidNumberString(value string) bool {
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func IsValidId(value string) bool {
|
||||
if len(value) != 26 {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, r := range value {
|
||||
if !unicode.IsLetter(r) && !unicode.IsNumber(r) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -331,3 +331,38 @@ func TestIsValidAlphaNumHyphenUnderscore(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsValidId(t *testing.T) {
|
||||
cases := []struct {
|
||||
Input string
|
||||
Result bool
|
||||
}{
|
||||
{
|
||||
Input: NewId(),
|
||||
Result: true,
|
||||
},
|
||||
{
|
||||
Input: "",
|
||||
Result: false,
|
||||
},
|
||||
{
|
||||
Input: "junk",
|
||||
Result: false,
|
||||
},
|
||||
{
|
||||
Input: "qwertyuiop1234567890asdfg{",
|
||||
Result: false,
|
||||
},
|
||||
{
|
||||
Input: NewId() + "}",
|
||||
Result: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
actual := IsValidId(tc.Input)
|
||||
if actual != tc.Result {
|
||||
t.Fatalf("case: %v\tshould returned: %#v", tc, tc.Result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user