fix(narrow): byte 缓冲写 32 位掩码结果改用 uint8(...)

base64 解码输出、zipfile zf_w16le/zf_win32le、zlib adler/gzip 尾写:目标为 bytes/uint8*/BYTE*(8 位),RHS 为 32 位表达式,触发隐式窄化;统一加 uint8(...)
This commit is contained in:
TermiNexus committed 2026-10-11 11:06:02 +08:00
1 parent 3dd5bca28e
commit 9d5028bc61
4 files changed
+29 -29

No files matched your search

+3 -3
View File
@@ -64,12 +64,12 @@ def b64decode(s: str, out: uint8*) -> sizet:
c = s[i+3] - 43
if s[i+3] != '=': val |= (b64_dec_tab[c] & 0x3F)
# Write recovered bytes
out[j] = (val >> 16) & 0xFF
out[j] = uint8((val >> 16) & 0xFF)
j += 1
if s[i+2] != '=':
out[j] = (val >> 8) & 0xFF
out[j] = uint8((val >> 8) & 0xFF)
j += 1
if s[i+3] != '=':
out[j] = val & 0xFF
out[j] = uint8(val & 0xFF)
j += 1
return j
+6 -6
View File
@@ -114,15 +114,15 @@ def zf_u32le(p: uint8*) -> uint32:
def zf_w16le(h: uint8*, v: uint32):
h[0] = v & 0xFF
h[1] = (v >> 8) & 0xFF
h[0] = uint8(v & 0xFF)
h[1] = uint8((v >> 8) & 0xFF)
def zf_win32le(h: uint8*, v: uint32):
h[0] = v & 0xFF
h[1] = (v >> 8) & 0xFF
h[2] = (v >> 16) & 0xFF
h[3] = (v >> 24) & 0xFF
h[0] = uint8(v & 0xFF)
h[1] = uint8((v >> 8) & 0xFF)
h[2] = uint8((v >> 16) & 0xFF)
h[3] = uint8((v >> 24) & 0xFF)
# All file openings allow read/write/delete sharing, avoiding mutually exclusive handles
+12 -12
View File
@@ -159,10 +159,10 @@ class Compress:
if s.wbits >= 0:
s.writer.align()
adler: uint32 = s.adler
s.writer.buf[s.writer.byte_pos + 0] = (adler >> 24) & 0xFF
s.writer.buf[s.writer.byte_pos + 1] = (adler >> 16) & 0xFF
s.writer.buf[s.writer.byte_pos + 2] = (adler >> 8) & 0xFF
s.writer.buf[s.writer.byte_pos + 3] = (adler >> 0) & 0xFF
s.writer.buf[s.writer.byte_pos + 0] = uint8((adler >> 24) & 0xFF)
s.writer.buf[s.writer.byte_pos + 1] = uint8((adler >> 16) & 0xFF)
s.writer.buf[s.writer.byte_pos + 2] = uint8((adler >> 8) & 0xFF)
s.writer.buf[s.writer.byte_pos + 3] = uint8((adler >> 0) & 0xFF)
s.writer.byte_pos += 4
self.is_finished = 1
total: sizet = s.writer.total()
@@ -590,14 +590,14 @@ def compress(pool: memhub.MemManager*, data: BYTEPTR, data_len: sizet,
pool.free(raw_result)
crc: uint32 = zchecksum.zchecksum_crc32(data, data_len, 0)
gzip_buf[pos + 0] = (crc) & 0xFF
gzip_buf[pos + 1] = (crc >> 8) & 0xFF
gzip_buf[pos + 2] = (crc >> 16) & 0xFF
gzip_buf[pos + 3] = (crc >> 24) & 0xFF
gzip_buf[pos + 4] = (data_len) & 0xFF
gzip_buf[pos + 5] = (data_len >> 8) & 0xFF
gzip_buf[pos + 6] = (data_len >> 16) & 0xFF
gzip_buf[pos + 7] = (data_len >> 24) & 0xFF
gzip_buf[pos + 0] = uint8((crc) & 0xFF)
gzip_buf[pos + 1] = uint8((crc >> 8) & 0xFF)
gzip_buf[pos + 2] = uint8((crc >> 16) & 0xFF)
gzip_buf[pos + 3] = uint8((crc >> 24) & 0xFF)
gzip_buf[pos + 4] = uint8((data_len) & 0xFF)
gzip_buf[pos + 5] = uint8((data_len >> 8) & 0xFF)
gzip_buf[pos + 6] = uint8((data_len >> 16) & 0xFF)
gzip_buf[pos + 7] = uint8((data_len >> 24) & 0xFF)
pos += 8
*out_len = pos
return shrink_to_fit(pool, gzip_buf, pos)
+8 -8
View File
@@ -199,10 +199,10 @@ class zdeflate_stream:
if self.wbits >= 0:
self.writer.align()
adler: uint32 = self.adler
self.writer.buf[self.writer.byte_pos + 0] = (adler >> 24) & 0xFF
self.writer.buf[self.writer.byte_pos + 1] = (adler >> 16) & 0xFF
self.writer.buf[self.writer.byte_pos + 2] = (adler >> 8) & 0xFF
self.writer.buf[self.writer.byte_pos + 3] = (adler >> 0) & 0xFF
self.writer.buf[self.writer.byte_pos + 0] = uint8((adler >> 24) & 0xFF)
self.writer.buf[self.writer.byte_pos + 1] = uint8((adler >> 16) & 0xFF)
self.writer.buf[self.writer.byte_pos + 2] = uint8((adler >> 8) & 0xFF)
self.writer.buf[self.writer.byte_pos + 3] = uint8((adler >> 0) & 0xFF)
self.writer.byte_pos += 4
elif mode == 2 or mode == 3:
self.writer.write_bits(0, 1)
@@ -426,10 +426,10 @@ def zdeflate_one_shot(pool: memhub.MemManager*, data: UINT8PTR, length: sizet,
if wbits >= 0:
s.writer.align()
adler: uint32 = s.adler
s.writer.buf[s.writer.byte_pos + 0] = (adler >> 24) & 0xFF
s.writer.buf[s.writer.byte_pos + 1] = (adler >> 16) & 0xFF
s.writer.buf[s.writer.byte_pos + 2] = (adler >> 8) & 0xFF
s.writer.buf[s.writer.byte_pos + 3] = (adler >> 0) & 0xFF
s.writer.buf[s.writer.byte_pos + 0] = uint8((adler >> 24) & 0xFF)
s.writer.buf[s.writer.byte_pos + 1] = uint8((adler >> 16) & 0xFF)
s.writer.buf[s.writer.byte_pos + 2] = uint8((adler >> 8) & 0xFF)
s.writer.buf[s.writer.byte_pos + 3] = uint8((adler >> 0) & 0xFF)
s.writer.byte_pos += 4
*out_len = s.writer.total()
result: UINT8PTR = UINT8PTR(zdef.zdef_alloc(pool, *out_len))