Skip to content

Commit f45672c

Browse files
authored
libvncserver: check before shifting in table init
As it can turn into undefined behavior like shift exponent 32 is too large for 32-bit type 'uint32_t'
1 parent eb1389d commit f45672c

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

libvncserver/tableinittctemplate.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ rfbInitOneRGBTableOUT (OUT_T *table, int inMax, int outMax, int outShift,
126126
int nEntries = inMax + 1;
127127

128128
for (i = 0; i < nEntries; i++) {
129-
table[i] = ((OUT_T)((i * outMax + inMax / 2) / inMax)) << outShift;
129+
if (outShift < 32) {
130+
table[i] = ((OUT_T)((i * outMax + inMax / 2) / inMax)) << outShift;
131+
} else {
132+
table[i] = 0;
133+
}
130134
#if (OUT != 8)
131135
if (swap) {
132136
table[i] = SwapOUT(table[i]);

0 commit comments

Comments
 (0)