Skip to content

Commit cad3d7e

Browse files
committed
Fix sanitization of contact phone numbers
1 parent fb6d4b0 commit cad3d7e

3 files changed

Lines changed: 21 additions & 2 deletions

File tree

api/pkg/requests/message_call_missed_request.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type MessageCallMissed struct {
2222
// Sanitize sets defaults to MessageReceive
2323
func (input *MessageCallMissed) Sanitize() MessageCallMissed {
2424
input.To = input.sanitizeAddress(input.To)
25-
input.From = input.sanitizeAddress(input.From)
25+
input.From = input.sanitizeContact(input.To, input.From)
2626
input.SIM = input.sanitizeSIM(input.SIM)
2727

2828
return *input

api/pkg/requests/message_receive_request.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type MessageReceive struct {
2828
// Sanitize sets defaults to MessageReceive
2929
func (input *MessageReceive) Sanitize() MessageReceive {
3030
input.To = input.sanitizeAddress(input.To)
31-
input.From = input.sanitizeAddress(input.From)
31+
input.From = input.sanitizeContact(input.To, input.From)
3232
if strings.TrimSpace(string(input.SIM)) == "" || input.SIM == ("DEFAULT") {
3333
input.SIM = entities.SIM1
3434
}

api/pkg/requests/request.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,25 @@ func (input *request) sanitizeAddress(value string) string {
2626
return value
2727
}
2828

29+
func (input *request) sanitizeContact(owner string, contact string) string {
30+
contact = strings.TrimSpace(contact)
31+
32+
if len(contact) < 8 || !input.isDigits(contact) {
33+
return contact
34+
}
35+
36+
regionPhoneNumber, err := phonenumbers.Parse(owner, phonenumbers.UNKNOWN_REGION)
37+
if err != nil {
38+
return contact
39+
}
40+
41+
if number, err := phonenumbers.Parse(contact, phonenumbers.GetRegionCodeForNumber(regionPhoneNumber)); err == nil {
42+
contact = phonenumbers.Format(number, phonenumbers.E164)
43+
}
44+
45+
return contact
46+
}
47+
2948
// sanitizeBool sanitizes a boolean string
3049
func (input *request) sanitizeBool(value string) string {
3150
value = strings.TrimSpace(value)

0 commit comments

Comments
 (0)