mirror of
https://github.com/amnezia-vpn/amneziawg-go.git
synced 2025-06-07 13:53: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 148+tempASecCfg.initPacketJunkSize >= MaxSegmentSize {
|
||||
if MessageInitiationSize+tempASecCfg.initPacketJunkSize >= MaxSegmentSize {
|
||||
if err != nil {
|
||||
err = ipcErrorf(
|
||||
ipc.IpcErrorInvalid,
|
||||
|
@ -656,7 +656,7 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
|||
}
|
||||
}
|
||||
if tempASecCfg.responsePacketJunkSize != 0 {
|
||||
if 92+tempASecCfg.responsePacketJunkSize >= MaxSegmentSize {
|
||||
if MessageResponseSize+tempASecCfg.responsePacketJunkSize >= MaxSegmentSize {
|
||||
if err != nil {
|
||||
err = ipcErrorf(
|
||||
ipc.IpcErrorInvalid,
|
||||
|
@ -720,19 +720,42 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
|||
MessageTransportType = 4
|
||||
}
|
||||
|
||||
packetSizeToMsgType = map[int]uint32{
|
||||
MessageInitiationSize + device.aSecCfg.initPacketJunkSize: MessageInitiationType,
|
||||
MessageResponseSize + device.aSecCfg.responsePacketJunkSize: MessageResponseType,
|
||||
MessageCookieReplySize: MessageCookieReplyType,
|
||||
MessageTransportSize: MessageTransportType,
|
||||
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{
|
||||
newInitSize: MessageInitiationType,
|
||||
newResponseSize: MessageResponseType,
|
||||
MessageCookieReplySize: MessageCookieReplyType,
|
||||
MessageTransportSize: MessageTransportType,
|
||||
}
|
||||
|
||||
msgTypeToJunkSize = map[uint32]int{
|
||||
MessageInitiationType: device.aSecCfg.initPacketJunkSize,
|
||||
MessageResponseType: device.aSecCfg.responsePacketJunkSize,
|
||||
MessageCookieReplyType: 0,
|
||||
MessageTransportType: 0,
|
||||
}
|
||||
}
|
||||
|
||||
msgTypeToJunkSize = map[uint32]int{
|
||||
MessageInitiationType: device.aSecCfg.initPacketJunkSize,
|
||||
MessageResponseType: device.aSecCfg.responsePacketJunkSize,
|
||||
MessageCookieReplyType: 0,
|
||||
MessageTransportType: 0,
|
||||
}
|
||||
device.isASecOn.SetTo(isASecOn)
|
||||
device.aSecMux.Unlock()
|
||||
|
||||
|
|
|
@ -135,15 +135,24 @@ func (device *Device) RoutineReceiveIncoming(
|
|||
// check size of packet
|
||||
|
||||
packet := bufsArrs[i][:size]
|
||||
var msgType uint32
|
||||
if device.isAdvancedSecurityOn() {
|
||||
var junkSize int
|
||||
if msgType, ok := packetSizeToMsgType[size]; ok {
|
||||
junkSize = msgTypeToJunkSize[msgType]
|
||||
if mapMsgType, ok := packetSizeToMsgType[size]; ok {
|
||||
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
|
||||
packet = packet[junkSize:]
|
||||
} else {
|
||||
msgType = binary.LittleEndian.Uint32(packet[:4])
|
||||
}
|
||||
msgType := binary.LittleEndian.Uint32(packet[:4])
|
||||
switch msgType {
|
||||
|
||||
// check if transport
|
||||
|
|
Loading…
Add table
Reference in a new issue