handle postconfig error & fix uniquness

This commit is contained in:
Mark Puha 2023-09-22 06:19:38 +02:00
parent a27b1dba96
commit 5fbb7fdb08
2 changed files with 41 additions and 25 deletions

View file

@ -565,28 +565,7 @@ func (device *Device) isAdvancedSecurityOn() bool {
return device.isASecOn.IsSet()
}
func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
isSameMap := map[uint32]bool{}
isSameMap[tempASecCfg.initPacketMagicHeader] = true
isSameMap[tempASecCfg.responsePacketMagicHeader] = true
isSameMap[tempASecCfg.underloadPacketMagicHeader] = true
isSameMap[tempASecCfg.transportPacketMagicHeader] = true
// size will be different if same values
if len(isSameMap) != 4 {
err = ipcErrorf(
ipc.IpcErrorInvalid,
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
tran:%d`,
tempASecCfg.initPacketMagicHeader,
tempASecCfg.responsePacketMagicHeader,
tempASecCfg.underloadPacketMagicHeader,
tempASecCfg.transportPacketMagicHeader,
)
device.isASecOn.UnSet()
return
}
func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
isASecOn := false
device.aSecMux.Lock()
if tempASecCfg.junkPacketCount < 0 {
@ -737,10 +716,41 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
MessageTransportType = device.aSecCfg.transportPacketMagicHeader
} else {
device.log.Verbosef("UAPI: Using default transport type")
MessageTransportType = 4
}
isSameMap := map[uint32]bool{}
isSameMap[MessageInitiationType] = true
isSameMap[MessageResponseType] = true
isSameMap[MessageCookieReplyType] = true
isSameMap[MessageTransportType] = true
// size will be different if same values
if len(isSameMap) != 4 {
if err != nil {
err = ipcErrorf(
ipc.IpcErrorInvalid,
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
tran:%d; %w`,
MessageInitiationType,
MessageResponseType,
MessageCookieReplyType,
MessageTransportType,
err,
)
} else {
err = ipcErrorf(
ipc.IpcErrorInvalid,
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
tran:%d`,
MessageInitiationType,
MessageResponseType,
MessageCookieReplyType,
MessageTransportType,
)
}
}
newInitSize := MessageInitiationSize + device.aSecCfg.initPacketJunkSize
newResponseSize := MessageResponseSize + device.aSecCfg.responsePacketJunkSize

View file

@ -191,7 +191,10 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) {
line := scanner.Text()
if line == "" {
// Blank line means terminate operation.
device.handlePostConfig(&tempASecCfg)
err := device.handlePostConfig(&tempASecCfg)
if err != nil {
return err
}
peer.handlePostConfig()
return nil
}
@ -227,7 +230,10 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) {
return err
}
}
device.handlePostConfig(&tempASecCfg)
err = device.handlePostConfig(&tempASecCfg)
if err != nil {
return err
}
peer.handlePostConfig()
if err := scanner.Err(); err != nil {