mirror of
https://github.com/amnezia-vpn/amneziawg-go.git
synced 2025-06-07 22:03:44 +02:00
error init&resp size same; improve logic
This commit is contained in:
parent
36431519bd
commit
336282f299
2 changed files with 48 additions and 16 deletions
|
@ -630,7 +630,7 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if tempASecCfg.initPacketJunkSize != 0 {
|
if tempASecCfg.initPacketJunkSize != 0 {
|
||||||
if 148+tempASecCfg.initPacketJunkSize >= MaxSegmentSize {
|
if MessageInitiationSize+tempASecCfg.initPacketJunkSize >= MaxSegmentSize {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = ipcErrorf(
|
err = ipcErrorf(
|
||||||
ipc.IpcErrorInvalid,
|
ipc.IpcErrorInvalid,
|
||||||
|
@ -656,7 +656,7 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if tempASecCfg.responsePacketJunkSize != 0 {
|
if tempASecCfg.responsePacketJunkSize != 0 {
|
||||||
if 92+tempASecCfg.responsePacketJunkSize >= MaxSegmentSize {
|
if MessageResponseSize+tempASecCfg.responsePacketJunkSize >= MaxSegmentSize {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = ipcErrorf(
|
err = ipcErrorf(
|
||||||
ipc.IpcErrorInvalid,
|
ipc.IpcErrorInvalid,
|
||||||
|
@ -720,9 +720,30 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
MessageTransportType = 4
|
MessageTransportType = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newInitSize := MessageInitiationSize + device.aSecCfg.initPacketJunkSize
|
||||||
|
newResponseSize := MessageResponseSize + device.aSecCfg.responsePacketJunkSize
|
||||||
|
|
||||||
|
if newInitSize == newResponseSize {
|
||||||
|
if err != nil {
|
||||||
|
err = ipcErrorf(
|
||||||
|
ipc.IpcErrorInvalid,
|
||||||
|
`new init size:%d; and new response size:%d; should differ; %w`,
|
||||||
|
newInitSize,
|
||||||
|
newResponseSize,
|
||||||
|
err,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
err = ipcErrorf(
|
||||||
|
ipc.IpcErrorInvalid,
|
||||||
|
`new init size:%d; and new response size:%d; should differ`,
|
||||||
|
newInitSize,
|
||||||
|
newResponseSize,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
packetSizeToMsgType = map[int]uint32{
|
packetSizeToMsgType = map[int]uint32{
|
||||||
MessageInitiationSize + device.aSecCfg.initPacketJunkSize: MessageInitiationType,
|
newInitSize: MessageInitiationType,
|
||||||
MessageResponseSize + device.aSecCfg.responsePacketJunkSize: MessageResponseType,
|
newResponseSize: MessageResponseType,
|
||||||
MessageCookieReplySize: MessageCookieReplyType,
|
MessageCookieReplySize: MessageCookieReplyType,
|
||||||
MessageTransportSize: MessageTransportType,
|
MessageTransportSize: MessageTransportType,
|
||||||
}
|
}
|
||||||
|
@ -733,6 +754,8 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
MessageCookieReplyType: 0,
|
MessageCookieReplyType: 0,
|
||||||
MessageTransportType: 0,
|
MessageTransportType: 0,
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
device.isASecOn.SetTo(isASecOn)
|
device.isASecOn.SetTo(isASecOn)
|
||||||
device.aSecMux.Unlock()
|
device.aSecMux.Unlock()
|
||||||
|
|
||||||
|
|
|
@ -135,15 +135,24 @@ func (device *Device) RoutineReceiveIncoming(
|
||||||
// check size of packet
|
// check size of packet
|
||||||
|
|
||||||
packet := bufsArrs[i][:size]
|
packet := bufsArrs[i][:size]
|
||||||
|
var msgType uint32
|
||||||
if device.isAdvancedSecurityOn() {
|
if device.isAdvancedSecurityOn() {
|
||||||
var junkSize int
|
var junkSize int
|
||||||
if msgType, ok := packetSizeToMsgType[size]; ok {
|
if mapMsgType, ok := packetSizeToMsgType[size]; ok {
|
||||||
junkSize = msgTypeToJunkSize[msgType]
|
junkSize = msgTypeToJunkSize[mapMsgType]
|
||||||
|
msgType = mapMsgType
|
||||||
|
} else {
|
||||||
|
msgType = binary.LittleEndian.Uint32(packet[:4])
|
||||||
|
if msgType != MessageTransportType {
|
||||||
|
device.log.Verbosef("ASec: Received message with unknown type")
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// shift junk
|
// shift junk
|
||||||
packet = packet[junkSize:]
|
packet = packet[junkSize:]
|
||||||
|
} else {
|
||||||
|
msgType = binary.LittleEndian.Uint32(packet[:4])
|
||||||
}
|
}
|
||||||
msgType := binary.LittleEndian.Uint32(packet[:4])
|
|
||||||
switch msgType {
|
switch msgType {
|
||||||
|
|
||||||
// check if transport
|
// check if transport
|
||||||
|
|
Loading…
Add table
Reference in a new issue