mirror of
https://github.com/nadoo/glider.git
synced 2025-02-24 01:45:39 +08:00
vmess: fixed bug in aes-128-gcm
This commit is contained in:
parent
d84f540c4d
commit
5ebbf7ffe8
@ -36,14 +36,14 @@ func (w *aeadWriter) Write(b []byte) (int, error) {
|
|||||||
func (w *aeadWriter) ReadFrom(r io.Reader) (n int64, err error) {
|
func (w *aeadWriter) ReadFrom(r io.Reader) (n int64, err error) {
|
||||||
for {
|
for {
|
||||||
buf := w.buf
|
buf := w.buf
|
||||||
payloadBuf := buf[lenSize : lenSize+defaultChunkSize]
|
payloadBuf := buf[lenSize : lenSize+defaultChunkSize-w.Overhead()]
|
||||||
|
|
||||||
nr, er := r.Read(payloadBuf)
|
nr, er := r.Read(payloadBuf)
|
||||||
if nr > 0 {
|
if nr > 0 {
|
||||||
n += int64(nr)
|
n += int64(nr)
|
||||||
buf = buf[:lenSize+nr+w.Overhead()]
|
buf = buf[:lenSize+nr+w.Overhead()]
|
||||||
payloadBuf = payloadBuf[:nr]
|
payloadBuf = payloadBuf[:nr]
|
||||||
binary.BigEndian.PutUint16(buf[:lenSize], uint16(nr))
|
binary.BigEndian.PutUint16(buf[:lenSize], uint16(nr+w.Overhead()))
|
||||||
|
|
||||||
binary.BigEndian.PutUint16(w.nonce[:2], w.count)
|
binary.BigEndian.PutUint16(w.nonce[:2], w.count)
|
||||||
copy(w.nonce[2:], w.iv[2:12])
|
copy(w.nonce[2:], w.iv[2:12])
|
||||||
@ -126,9 +126,10 @@ func (r *aeadReader) Read(b []byte) (int, error) {
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
m := copy(b, r.buf[:len])
|
dataLen := int(len) - r.Overhead()
|
||||||
if m < int(len) {
|
m := copy(b, r.buf[:dataLen])
|
||||||
r.leftover = r.buf[m:len]
|
if m < int(dataLen) {
|
||||||
|
r.leftover = r.buf[m:dataLen]
|
||||||
}
|
}
|
||||||
|
|
||||||
return m, err
|
return m, err
|
||||||
|
Loading…
Reference in New Issue
Block a user