소스 검색

fix shadowsocks2022 non-EIH UDP panic

dyhkwong 2 년 전
부모
커밋
005812cd37
2개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      proxy/shadowsocks2022/method_aes128gcm.go
  2. 3 0
      proxy/shadowsocks2022/method_aes256gcm.go

+ 3 - 0
proxy/shadowsocks2022/method_aes128gcm.go

@@ -62,6 +62,9 @@ func (a AES128GCMMethod) GetUDPClientProcessor(ipsk [][]byte, psk []byte, deriva
 		}
 		return aead
 	}
+	if len(ipsk) == 0 {
+		return NewAESUDPClientPacketProcessor(reqSeparateHeaderCipher, respSeparateHeaderCipher, getPacketAEAD, nil), nil
+	}
 	eihGenerator := newAESEIHGeneratorContainer(len(ipsk), psk, ipsk)
 	getEIH := func(mask []byte) ExtensibleIdentityHeaders {
 		eih, err := eihGenerator.GenerateEIHUDP(derivation, a, mask)

+ 3 - 0
proxy/shadowsocks2022/method_aes256gcm.go

@@ -62,6 +62,9 @@ func (a AES256GCMMethod) GetUDPClientProcessor(ipsk [][]byte, psk []byte, deriva
 		}
 		return aead
 	}
+	if len(ipsk) == 0 {
+		return NewAESUDPClientPacketProcessor(reqSeparateHeaderCipher, respSeparateHeaderCipher, getPacketAEAD, nil), nil
+	}
 	eihGenerator := newAESEIHGeneratorContainer(len(ipsk), psk, ipsk)
 	getEIH := func(mask []byte) ExtensibleIdentityHeaders {
 		eih, err := eihGenerator.GenerateEIHUDP(derivation, a, mask)