History

fix ubsan warning on 32bit shift using twice 16bit calling

huili2 committed 9 years ago

Commit 33641681 parent 6d9220c2 files · +14 −7Browse files

Showing the changes to codec/decoder/core/src/au_parser.cpp (1 of 2 files). Show all

Unified · Split

codec/decoder/core/src/au_parser.cpp+11−4
@@ -1516,11 +1516,18 @@ int32_t ParseVui (PWelsDecoderContext pCtx, PSps pSps, PBitStringAux pBsAux) { · 1515 unmodified lines
15161516 WELS_READ_VERIFY (BsGetOneBit (pBsAux, &uiCode)); //timing_info_present_flag
15171517 pVui->bTimingInfoPresentFlag = !!uiCode;
15181518 if (pVui->bTimingInfoPresentFlag) {
1519− WELS_READ_VERIFY (BsGetBits (pBsAux, 32, &uiCode)); //num_units_in_tick
1520− pVui->uiNumUnitsInTick = uiCode;
1519+ uint32_t uiTmp = 0;
1520+ WELS_READ_VERIFY (BsGetBits (pBsAux, 16, &uiCode)); //num_units_in_tick
1521+ uiTmp = (uiCode << 16);
1522+ WELS_READ_VERIFY (BsGetBits (pBsAux, 16, &uiCode)); //num_units_in_tick
1523+ uiTmp |= uiCode;
1524+ pVui->uiNumUnitsInTick = uiTmp;
15211525 WELS_CHECK_SE_LOWER_WARNING (pVui->uiNumUnitsInTick, 1, "num_units_in_tick");
1522− WELS_READ_VERIFY (BsGetBits (pBsAux, 32, &uiCode)); //time_scale
1523− pVui->uiTimeScale = uiCode;
1526+ WELS_READ_VERIFY (BsGetBits (pBsAux, 16, &uiCode)); //time_scale
1527+ uiTmp = (uiCode << 16);
1528+ WELS_READ_VERIFY (BsGetBits (pBsAux, 16, &uiCode)); //time_scale
1529+ uiTmp |= uiCode;
1530+ pVui->uiTimeScale = uiTmp;
15241531 WELS_READ_VERIFY (BsGetOneBit (pBsAux, &uiCode)); //fixed_frame_rate_flag
15251532 pVui->bFixedFrameRateFlag = !!uiCode;
15261533 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t