
āĻāĻŽāĻžāĻĻā§āϰ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϞāĻāϞāĻāĻŋāĻāĻŽ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻļā§āώ āĻā§āĻĄ āĻā§āĻ āĻāϰāĻžāϰ āĻĒāϰ āĻĻā§āĻ āĻŦāĻāϰā§āϰāĻ āĻŦā§āĻļāĻŋ āϏāĻŽāϝāĻŧ āĻā§āĻā§ āĻā§āĻā§āĨ¤ āĻāϏā§āύ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻŋ āϝ⧠āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻāĻāύāĻ āϤā§āϰā§āĻāĻŋ āĻāĻŦāĻ āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻĻā§āϰā§āĻŦāϞāϤāĻž āϏāύāĻžāĻā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻ
āĻā§āϰāĻŖā§ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰāĨ¤ āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāϰāĻž LLVM 8.0.0 āϰāĻŋāϞāĻŋāĻā§ āύāϤā§āύ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻŦ āĻāĻŦāĻ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻŦāĨ¤
āĻĒā§āϰāĻŦāύā§āϧ āϞāĻŋāĻāϤ⧠āĻšāĻŦā§
āϏāϤā§āϝāĻŋ āĻāĻĨāĻž āĻŦāϞāϤā§, āĻāĻŽāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āϞāĻŋāĻāϤ⧠āĻāĻžāĻāύāĻŋāĨ¤ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ āϏāĻŽā§āĻĒāϰā§āĻā§ āϞāĻŋāĻāϤ⧠āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āύāϝāĻŧ āϝāĻž āĻāĻŽāϰāĻž āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻŦāĻžāϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āĻāĻŋ (, , ) āύāϤā§āύ āĻāĻŋāĻā§ āύāĻŋāϝāĻŧā§ āϞāĻŋāĻāϞ⧠āĻāĻžāϞ⧠āĻšāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāϰ āĻā§āύ⧠āĻŦāĻŋāĻāϞā§āĻĒ āύā§āĻāĨ¤
āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāϞāĻāϞāĻāĻŋāĻāĻŽ-āĻāϰ āĻāĻāĻāĻŋ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻŦāĻž āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻšāϝāĻŧ , āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻŽā§āĻāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϧāϰāĻŖā§āϰ āĻĒā§āϰāĻļā§āύ āĻĒāĻžāĻ:
āĻĻā§āĻā§āύ, āĻā§āϞā§āϝāĻžāĻ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻ ā§āϝāĻžāύāĻžāϞāĻžāĻāĻāĻžāϰā§āϰ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖ āύāϤā§āύ āϤā§āϰā§āĻāĻŋ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻļāĻŋāĻā§āĻā§! āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻŽāύ⧠āĻšāĻā§āĻā§ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻāϤāĻž āĻāĻŽā§ āϝāĻžāĻā§āĻā§āĨ¤ āĻā§āϞā§āϝāĻžāĻ āĻāĻā§āϰ āĻā§āϝāĻŧā§ āĻāϰāĻ āĻŦā§āĻļāĻŋ āϤā§āϰā§āĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāϝāĻŧ āĻāĻŦāĻ PVS-āϏā§āĻā§āĻĄāĻŋāĻāϰ āϏāĻā§āώāĻŽāϤāĻžāĻā§āϞāĻŋ āϧāϰ⧠āĻĢā§āϞā§ā§ˇ āĻāĻĒāύāĻŋ āĻ āĻŦā§āϝāĻĒāĻžāϰ⧠āĻā§ āĻāĻžāĻŦāĻā§āύ?
āĻāĻāĻŋāϰ āĻāύā§āϝ āĻāĻŽāĻŋ āϏāϰā§āĻŦāĻĻāĻž āĻāĻŽāύ āĻāĻŋāĻā§ āĻāϤā§āϤāϰ āĻĻāĻŋāϤ⧠āĻāĻžāĻ:
āĻāĻŽāϰāĻžāĻ āĻ āϞāϏ āĻŦāϏ⧠āĻĨāĻžāĻāĻŋ āύāĻž! āĻāĻŽāϰāĻž āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻā§āϰ āĻā§āώāĻŽāϤāĻž āĻāϞā§āϞā§āĻāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻāύā§āύāϤ āĻāϰā§āĻāĻŋāĨ¤ āϤāĻžāĻ āĻāĻŋāύā§āϤāĻž āĻāϰāĻŦā§āύ āύāĻž, āĻāĻŽāϰāĻž āĻāĻā§āϰ āĻŽāϤāĻ āύā§āϤā§āϤā§āĻŦ āĻĻāĻŋāϝāĻŧā§ āϝāĻžāĻā§āĻāĻŋāĨ¤
āĻĻā§āϰā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϰāĻžāĻĒ āĻāϤā§āϤāϰāĨ¤ āĻāϤ⧠āĻā§āύ⧠āĻĒā§āϰāĻŽāĻžāĻŖ āύā§āĻāĨ¤ āĻāϰ āϏā§āĻ āĻāĻžāϰāĻŖā§āĻ āĻāĻŽāĻŋ āĻāĻāύ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āϞāĻŋāĻāĻāĻŋāĨ¤ āϏā§āϤāϰāĻžāĻ, āĻāϞāĻāϞāĻāĻŋāĻāĻŽ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻāĻŦāĻžāϰāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāϤ⧠āĻŦāĻŋāĻāĻŋāύā§āύ āϤā§āϰā§āĻāĻŋ āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāύ āϏā§āĻā§āϞāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŦ āϝāĻž āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻŦāϞ⧠āĻŽāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻā§āϞā§āϝāĻžāĻ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻ ā§āϝāĻžāύāĻžāϞāĻžāĻāĻāĻžāϰ āĻāĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāϝāĻŧ āύāĻž (āĻŦāĻž āĻāĻāĻŋāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻāĻāĻŋ āĻāϰāĻž āĻ āϤā§āϝāύā§āϤ āĻ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ)āĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻŽāϰāĻž āĻĒāĻžāϰāĻŋ. āϤāĻžāĻāĻžāĻĄāĻŧāĻž, āĻāĻŽāĻŋ āĻāĻ āϏāύā§āϧā§āϝāĻžāϝāĻŧ āĻāĻ āϏāĻŽāϏā§āϤ āϤā§āϰā§āĻāĻŋ āĻā§āĻāĻā§ āĻĒā§āϝāĻŧā§āĻāĻŋ āĻāĻŦāĻ āϞāĻŋāĻā§āĻāĻŋāϞāĻžāĻŽāĨ¤
āĻāĻŋāύā§āϤ⧠āύāĻŋāĻŦāύā§āϧāĻāĻŋ āϞāĻŋāĻāϤ⧠āĻāϝāĻŧā§āĻ āϏāĻĒā§āϤāĻžāĻš āϞā§āĻā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻļā§āϧ⧠āĻāĻ āϏāĻŦ āĻā§āĻā§āϏāĻā§ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āύāĻŋāĻā§āĻā§ āĻāύāϤ⧠āĻĒāĻžāϰāĻŋāύāĻŋ :)āĨ¤
āϝāĻžāĻāĻšā§āĻ, āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻāĻŦāĻ āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻĻā§āϰā§āĻŦāϞāϤāĻžāĻā§āϞāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻā§āύ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻā§āϰāĻšā§ āĻšāύ, āϤāĻŦā§ āĻāĻŽāĻŋ āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻāĻŋāĻ .
āύāϤā§āύ āĻāĻŦāĻ āĻĒā§āϰāĻžāύ⧠āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāϏ
āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦā§, āĻĒā§āϰāĻžāϝāĻŧ āĻĻā§āĻ āĻŦāĻāϰ āĻāĻā§ āĻāϞāĻāϞāĻāĻŋāĻāĻŽ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻāĻŦāĻžāϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŦāĻ āĻĒāĻžāĻāϝāĻŧāĻž āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϏāĻāĻļā§āϧāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāĻāύ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āϤā§āϰā§āĻāĻŋāϰ āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻžāĻ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦā§āĨ¤ āĻā§āύ āύāϤā§āύ āĻŦāĻžāĻ āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āĻā§? āĻāϰ āĻāύā§āϝ 3āĻāĻŋ āĻāĻžāϰāĻŖ āϰāϝāĻŧā§āĻā§:
- LLVM āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻŦāĻŋāĻāĻļāĻŋāϤ āĻšāĻā§āĻā§, āĻĒā§āϰāĻžāύ⧠āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻā§ āĻāĻŦāĻ āύāϤā§āύ āĻā§āĻĄ āϝā§āĻ āĻāϰāĻā§āĨ¤ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻāĻŦāĻ āϞāĻŋāĻāĻŋāϤ āĻā§āĻĄā§ āύāϤā§āύ āϤā§āϰā§āĻāĻŋ āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻŋ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰ⧠āϝ⧠āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤ, āĻāĻŦāĻ āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āύāϝāĻŧāĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āύāĻŋāĻŦāύā§āϧāĻā§āϞāĻŋ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻā§āϰ āĻā§āώāĻŽāϤāĻžāĻā§āϞāĻŋ āĻāĻžāϞāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāϝāĻŧ, āϤāĻŦā§ āĻā§āĻĄā§āϰ āĻā§āĻŖāĻŽāĻžāύ āĻāύā§āύāϤ āĻāϰāĻž āĻāĻŦāĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻ āĻŋāĻ āĻāϰāĻžāϰ āĻāϰāĻ āĻāĻŽāĻžāύā§āϰ āϏāĻžāĻĨā§ āĻāϰ āĻā§āύāĻ āϏāĻŽā§āĻĒāϰā§āĻ āύā§āĻ⧎ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāĻāĻāĻŋ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ!
- āĻāĻŽāϰāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāϏāĻā§ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻāϰāĻāĻŋ āĻāĻŦāĻ āĻāύā§āύāϤ āĻāϰāĻāĻŋāĨ¤ āĻ āϤāĻāĻŦ, āĻŦāĻŋāĻļā§āϞā§āώāĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϝāĻž āĻāĻāĻŋ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϏā§āĻā§āϝāĻžāύā§āϰ āϏāĻŽāϝāĻŧ āϞāĻā§āώā§āϝ āĻāϰā§āύāĻŋāĨ¤
- āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻāϤ⧠āύāϤā§āύ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāϏ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧā§āĻā§ āϝāĻž 2 āĻŦāĻāϰ āĻāĻā§ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻāĻŋāϞ āύāĻžāĨ¤ PVS-Studio-āĻāϰ āĻŦāĻŋāĻāĻžāĻļ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāύā§āϰ āĻāύā§āϝ āĻāĻŽāĻŋ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻŦāĻŋāĻāĻžāĻā§ āĻšāĻžāĻāϞāĻžāĻāĻ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋāĨ¤
2 āĻŦāĻāϰ āĻāĻā§ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄāĻžāϝāĻŧāĻāύāĻŋāϏā§āĻāĻŋāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻŋāĻšā§āύāĻŋāϤ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N1: āĻāĻĒāĻŋ-āĻĒā§āϏā§āĻ
static bool ShouldUpgradeX86Intrinsic(Function *F, StringRef Name) {
if (Name == "addcarryx.u32" || // Added in 8.0
....
Name == "avx512.mask.cvtps2pd.128" || // Added in 7.0
Name == "avx512.mask.cvtps2pd.256" || // Added in 7.0
Name == "avx512.cvtusi2sd" || // Added in 7.0
Name.startswith("avx512.mask.permvar.") || // Added in 7.0 // <=
Name.startswith("avx512.mask.permvar.") || // Added in 7.0 // <=
Name == "sse2.pmulu.dq" || // Added in 7.0
Name == "sse41.pmuldq" || // Added in 7.0
Name == "avx2.pmulu.dq" || // Added in 7.0
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-570] '||'-āĻāϰ āĻŦāĻžāĻŽ āĻāĻŦāĻ āĻĄāĻžāύ⧠'Name.startswith("avx512.mask.permvar.")' āĻ āĻāĻŋāύā§āύ āϏāĻžāĻŦ-āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āϰāϝāĻŧā§āĻā§āĨ¤ āĻ āĻĒāĻžāϰā§āĻāϰ. AutoUpgrade.cpp 73
āĻāĻāĻŋ āĻĻā§āĻāĻŦāĻžāϰ āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āϝ⧠āύāĻžāĻŽāĻāĻŋ "avx512.mask.permvar" āϏāĻžāĻŦāϏā§āĻā§āϰāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻšāϝāĻŧāĨ¤ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻā§āĻāĻāĻŋāϤā§, āϤāĻžāϰāĻž āϏā§āĻĒāώā§āĻāϤāĻ āĻ āύā§āϝ āĻāĻŋāĻā§ āϞāĻŋāĻāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻž āĻĒāĻžāĻ ā§āϝ āϏāĻāĻļā§āϧāύ āĻāϰāϤ⧠āĻā§āϞ⧠āĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĨ¤
āĻāĻŖā§āĻĄ N2: āĻāĻžāĻāĻĒā§
enum CXNameRefFlags {
CXNameRange_WantQualifier = 0x1,
CXNameRange_WantTemplateArgs = 0x2,
CXNameRange_WantSinglePiece = 0x4
};
void AnnotateTokensWorker::HandlePostPonedChildCursor(
CXCursor Cursor, unsigned StartTokenIndex) {
const auto flags = CXNameRange_WantQualifier | CXNameRange_WantQualifier;
....
}āϏāϤāϰā§āĻā§āĻāϰāĻŖ PVS-Studio: V501 '|'-āĻāϰ āĻŦāĻžāĻŽ āĻāĻŦāĻ āĻĄāĻžāύāĻĻāĻŋāĻā§ 'CXNameRange_WantQualifier' āĻ āĻāĻŋāύā§āύ āϏāĻžāĻŦ-āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āϰāϝāĻŧā§āĻā§āĨ¤ āĻ āĻĒāĻžāϰā§āĻāϰ. CIndex.cpp 7245
āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒā§āϰ āĻāĻžāϰāĻŖā§, āĻāĻāĻ āύāĻžāĻŽā§āϰ āϧā§āϰā§āĻŦāĻāĻāĻŋ āĻĻā§āĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ CXNameRange_WantQualifier.
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N3: āĻ āĻĒāĻžāϰā§āĻāϰ āĻ āĻā§āϰāĻžāϧāĻŋāĻāĻžāϰ āύāĻŋāϝāĻŧā§ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤāĻŋ
int PPCTTIImpl::getVectorInstrCost(unsigned Opcode, Type *Val, unsigned Index) {
....
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian() ? 1 : 0)
return 0;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-783] āϏāĻŽā§āĻāĻŦāϤ '?:' āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻžāϰ āĻā§āϝāĻŧā§ āĻāĻŋāύā§āύ āĻāĻĒāĻžāϝāĻŧā§ āĻāĻžāĻ āĻāϰā§āĨ¤ '?:' āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ '==' āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻā§āϝāĻŧā§ āĻāĻŽ āĻ āĻā§āϰāĻžāϧāĻŋāĻāĻžāϰ āϰāϝāĻŧā§āĻā§āĨ¤ PPCTargetTransformInfo.cpp 404
āĻāĻŽāĻžāϰ āĻŽāϤā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦ āϏā§āύā§āĻĻāϰ āĻā§āϞāĨ¤ āĻšā§āϝāĻžāĻ, āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āϏā§āύā§āĻĻāϰā§āϝ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻŽāĻžāϰ āĻ āĻĻā§āĻā§āϤ āϧāĻžāϰāĻŖāĻž āĻāĻā§ :)āĨ¤
āĻāĻāύ, āĻ āύā§āϝāĻžāϝāĻŧā§ , āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāĻāĻŋ āύāĻŋāĻŽā§āύāϰā§āĻĒ āĻŽā§āϞā§āϝāĻžāϝāĻŧāύ āĻāϰāĻž āĻšāϝāĻŧ:
(ISD == ISD::EXTRACT_VECTOR_ELT && (Index == ST->isLittleEndian())) ? 1 : 0āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĻā§āώā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻ āϧāϰāύā§āϰ āĻāĻāĻāĻŋ āĻļāϰā§āϤ āĻŦā§āĻāĻž āϝāĻžāϝāĻŧ āύāĻž, āϝā§āĻšā§āϤ⧠āĻāĻāĻŋ āĻšā§āϰāĻžāϏ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
(ISD == ISD::EXTRACT_VECTOR_ELT && Index == ST->isLittleEndian())āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏā§āĻĒāώā§āĻ āĻā§āϞāĨ¤ āĻā§āĻŦ āϏāĻŽā§āĻāĻŦāϤ, āϤāĻžāϰāĻž 0/1 āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞ āϏā§āĻāĻ. āĻā§āĻĄāĻāĻŋ āĻ āĻŋāĻ āĻāϰāϤ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻžāϰāύāĻžāϰāĻŋ āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻāĻžāϰāĻĒāĻžāĻļā§ āĻŦāύā§āϧāύ⧠āϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§:
if (ISD == ISD::EXTRACT_VECTOR_ELT && Index == (ST->isLittleEndian() ? 1 : 0))āϝāĻžāĻāĻšā§āĻ, āĻāĻžāϰāύāĻžāϰāĻŋ āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋ āĻā§āĻŦ āĻŦāĻŋāĻĒāĻā§āĻāύāĻ āĻāĻŦāĻ āϝā§āĻā§āϤāĻŋāĻ āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋāĻā§ āĻāϏā§āĻā§ āĻĻā§āϝāĻŧāĨ¤ āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āĻā§āĻŦ āϏāϤāϰā§āĻ āĻĨāĻžāĻā§āύ āĻāĻŦāĻ āĻŦāύā§āϧāύā§āϰ āϏāĻžāĻĨā§ āϞā§āĻā§ āĻšāĻŦā§āύ āύāĻžāĨ¤ āĻāĻŽāĻŋ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤāĻāĻžāĻŦā§ āĻāĻ āĻŦāĻŋāώāϝāĻŧ āϤāĻžāĻāĻžāύ , āĻ āϧā§āϝāĻžāϝāĻŧā§ "āϏāϤāϰā§āĻ āĻĨāĻžāĻā§āύ?: āĻ āĻĒāĻžāϰā§āĻāϰ āĻāĻŦāĻ āĻŦāύā§āϧāύā§āϤ⧠āĻāĻāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāϰā§āύāĨ¤"
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N4, N5: āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ
Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) {
....
TypedInit *LHS = dyn_cast<TypedInit>(Result);
....
LHS = dyn_cast<TypedInit>(
UnOpInit::get(UnOpInit::CAST, LHS, StringRecTy::get())
->Fold(CurRec));
if (!LHS) {
Error(PasteLoc, Twine("can't cast '") + LHS->getAsString() +
"' to string");
return nullptr;
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'LHS' āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ TGParser.cpp 2152
āϝāĻĻāĻŋ āύāĻŋāϰā§āĻĻā§āĻļāĻ LHS āĻļā§āύā§āϝ, āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻāĻžāϰāĻŋ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻāĻ āĻāĻāĻ āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻž āĻšāĻŦā§: LHS->getAsString().
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āϝāĻāύ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ⧠āϞā§āĻāĻžāύ⧠āĻĨāĻžāĻā§, āϝā§āĻšā§āϤ⧠āĻā§āĻ āϤāĻžāĻĻā§āϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āύāĻžāĨ¤ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻāϰāĻž āϏāĻŽāϏā§āϤ āĻ ā§āϝāĻžāĻā§āϏā§āϏāϝā§āĻā§āϝ āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§, āϤāĻž āϝāϤ āĻāύ āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĻ āύāĻž āĻā§āύāĨ¤ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻ āύā§āϝāĻžāύā§āϝ āĻĒāϰā§āĻā§āώāĻž āĻāĻŦāĻ āϤā§āϰā§āĻāĻŋ āϏā§āϰāĻā§āώāĻž āĻā§āĻļāϞāĻā§āϞāĻŋāĻā§ āĻā§āĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻĒā§āϰāĻ āĻāϰ⧠āϤāĻžāϰ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦ āĻāĻžāϞ āĻāĻĻāĻžāĻšāϰāĻŖāĨ¤
āĻ āύā§āϰā§āĻĒ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ āϤā§āϰā§āĻāĻŋ RHS āĻ āĻŋāĻ āύā§āĻā§āϰ āĻā§āĻĄā§ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'RHS' āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ TGParser.cpp 2186
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N6: āϏāϰāĻžāύā§āϰ āĻĒāϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž
static Expected<bool>
ExtractBlocks(....)
{
....
std::unique_ptr<Module> ProgClone = CloneModule(BD.getProgram(), VMap);
....
BD.setNewProgram(std::move(ProgClone)); // <=
MiscompiledFunctions.clear();
for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {
Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first); // <=
assert(NewF && "Function not found??");
MiscompiledFunctions.push_back(NewF);
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'ProgClone'-āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ Miscompilation.cpp 601
āĻļā§āϰā§āϤ⧠āĻāĻāĻāĻŋ āϏā§āĻŽāĻžāϰā§āĻ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĒā§āϰā§āĻāĻā§āϞā§āύ āĻŦāϏā§āϤā§āϰ āĻŽāĻžāϞāĻŋāĻāĻžāύāĻž āĻŦāύā§āϧ āĻāϰ⧠āĻĻā§āϝāĻŧ:
BD.setNewProgram(std::move(ProgClone));āĻāϏāϞā§, āĻāĻāύ āĻĒā§āϰā§āĻāĻā§āϞā§āύ āĻāĻāĻāĻŋ āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ. āĻ āϤāĻāĻŦ, āĻāĻāĻāĻŋ āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻ āĻŋāĻ āύā§āĻā§ āĻāĻāϤ⧠āĻšāĻŦā§:
Function *NewF = ProgClone->getFunction(MisCompFunctions[i].first);āĻāĻŋāύā§āϤā§, āĻŦāĻžāϏā§āϤāĻŦā§ āϤāĻž āĻšāĻŦā§ āύāĻž! āϞāĻā§āώā§āϝ āĻāϰā§āύ āϝ⧠āϞā§āĻĒāĻāĻŋ āĻāϏāϞ⧠āĻāĻžāϰā§āϝāĻāϰ āĻšāϝāĻŧ āύāĻžāĨ¤
āĻĒāĻžāϤā§āϰā§āϰ āĻļā§āϰā§āϤ⧠āĻā§āϞ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻž āĻĢāĻžāĻāĻļāύ āϏāĻžāĻĢ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
MiscompiledFunctions.clear();āĻāϰ āĻĒāϰā§, āĻāĻ āϧāĻžāϰāĻāĻāĻŋāϰ āĻāĻāĻžāϰ āϞā§āĻĒ āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ:
for (unsigned i = 0, e = MisCompFunctions.size(); i != e; ++i) {āĻāĻāĻž āĻĻā§āĻāϤ⧠āϏāĻšāĻ āϝ⧠āϞā§āĻĒ āĻļā§āϰ⧠āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āĻāĻāĻŋāĻ āĻāĻāĻāĻŋ āĻŦāĻžāĻ āĻāĻŦāĻ āĻā§āĻĄāĻāĻŋ āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āϞā§āĻāĻž āĻāĻāĻŋāϤāĨ¤
āĻŽāύ⧠āĻšāĻā§āĻā§ āĻāĻŽāϰāĻž āϏā§āĻ āĻŦāĻŋāĻā§āϝāĻžāϤ āϏāĻŽāϤāĻžāϰ āϤā§āϰā§āĻāĻŋāϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϝāĻŧā§āĻāĻŋ! āĻāĻāĻāĻŋ āĻā§āϞ āĻ āύā§āϝāĻāĻŋāĻā§ āĻŽā§āĻā§āĻļ āĻĻā§āϝāĻŧ :)
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N7: āϏāϰāĻžāύā§āϰ āĻĒāϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž
static Expected<bool> TestOptimizer(BugDriver &BD, std::unique_ptr<Module> Test,
std::unique_ptr<Module> Safe) {
outs() << " Optimizing functions being tested: ";
std::unique_ptr<Module> Optimized =
BD.runPassesOn(Test.get(), BD.getPassesToRun());
if (!Optimized) {
errs() << " Error running this sequence of passes"
<< " on the input program!n";
BD.setNewProgram(std::move(Test)); // <=
BD.EmitProgressBitcode(*Test, "pass-error", false); // <=
if (Error E = BD.debugOptimizerCrash())
return std::move(E);
return false;
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻā§āĻāϰāĻŖ: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'āĻĒāϰā§āĻā§āώāĻž' āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ Miscompilation.cpp 709
āĻāĻŦāĻžāϰāĻ āĻāĻāĻ āĻ āĻŦāϏā§āĻĨāĻžāĨ¤ āĻĒā§āϰāĻĨāĻŽā§, āĻŦāϏā§āϤā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āϏāϰāĻžāύ⧠āĻšāϝāĻŧ, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϝā§āύ āĻāĻŋāĻā§āĻ āĻāĻā§āύāĻŋāĨ¤ C++ āĻ āĻāύā§āĻĻā§āϞāύā§āϰ āĻļāĻŦā§āĻĻāĻžāϰā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāϰ⧠āĻāĻŽāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻā§āĻĄā§ āĻāĻ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻāϰāĻ āĻŦā§āĻļāĻŋ āĻāϰ⧠āĻĻā§āĻāĻŋāĨ¤ āĻāĻ āĻāĻžāϰāĻŖā§āĻ āĻāĻŽāĻŋ C++ āĻāĻžāώāĻž āĻāĻžāϞā§āĻŦāĻžāϏāĻŋ! āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻĒāĻžāϝāĻŧā§ āĻā§āϞāĻŋ āĻāϰāĻžāϰ āĻāϰāĻ āĻāĻŦāĻ āĻāϰāĻ āύāϤā§āύ āĻāĻĒāĻžāϝāĻŧ āϰāϝāĻŧā§āĻā§āĨ¤ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻā§āϰ āϏāĻŦāϏāĻŽāϝāĻŧ āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ :)āĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N8: āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ
void FunctionDumper::dump(const PDBSymbolTypeFunctionArg &Symbol) {
uint32_t TypeId = Symbol.getTypeId();
auto Type = Symbol.getSession().getSymbolById(TypeId);
if (Type)
Printer << "<unknown-type>";
else
Type->dump(*this);
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'āĻāĻžāĻāĻĒ'-āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ PrettyFunctionDumper.cpp 233
āϤā§āϰā§āĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻĒā§āϰāĻŋāύā§āĻāĻāĻāĻ āĻĢāĻžāĻāĻļāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻŽāύ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻŽāĻžāĻŽāϞāĻž āϰāϝāĻŧā§āĻā§āĨ¤ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻ āĻĒā§āĻā§āώāĻž āĻāϰāĻā§, āϝāĻžāϰāĻž āϤāĻžāϰ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻāĻāĻŋ āĻ āĻŋāĻ āĻāϰāϤ⧠āĻŦāĻžāϧā§āϝ āĻšāĻŦā§āĨ¤
āϏāĻāĻļā§āϧāύ:
if (Type)
Type->dump(*this);
else
Printer << "<unknown-type>";āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N9: āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ
void SearchableTableEmitter::collectTableEntries(
GenericTable &Table, const std::vector<Record *> &Items) {
....
RecTy *Ty = resolveTypes(Field.RecType, TI->getType());
if (!Ty) // <=
PrintFatalError(Twine("Field '") + Field.Name + "' of table '" +
Table.Name + "' has incompatible type: " +
Ty->getAsString() + " vs. " + // <=
TI->getType()->getAsString());
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V522 [CWE-476] āύāĻžāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'Ty'-āĻāϰ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏāĻŋāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ SearchableTableEmitter.cpp 614
āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āϏāĻŦāĻāĻŋāĻā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻā§āϝāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤
āĻāĻŖā§āĻĄ N10: āĻāĻžāĻāĻĒā§
bool FormatTokenLexer::tryMergeCSharpNullConditionals() {
....
auto &Identifier = *(Tokens.end() - 2);
auto &Question = *(Tokens.end() - 1);
....
Identifier->ColumnWidth += Question->ColumnWidth;
Identifier->Type = Identifier->Type; // <=
Tokens.erase(Tokens.end() - 1);
return true;
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: 'āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ->āĻāĻžāĻāĻĒ' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻāĻŋ āύāĻŋāĻā§āĻ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ FormatTokenLexer.cpp 249
āύāĻŋāĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻžāϰ āĻā§āύ āĻŽāĻžāύ⧠āύā§āĻāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āϤāĻžāϰāĻž āϞāĻŋāĻāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞ:
Identifier->Type = Question->Type;āĻāĻŖā§āĻĄ N11: āϏāύā§āĻĻā§āĻšāĻāύāĻ āĻŦāĻŋāϰāϤāĻŋ
void SystemZOperand::print(raw_ostream &OS) const {
switch (Kind) {
break;
case KindToken:
OS << "Token:" << getToken();
break;
case KindReg:
OS << "Reg:" << SystemZInstPrinter::getRegisterName(getReg());
break;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-478] 'āϏā§āĻāĻ' āĻŦāĻŋāĻŦā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύ. āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠āĻĒā§āϰāĻĨāĻŽ 'āĻā§āϏ' āĻ āĻĒāĻžāϰā§āĻāϰ āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤāĨ¤ SystemZAsmParser.cpp 652
āĻļā§āϰā§āϤ⧠āĻā§āĻŦ āϏāύā§āĻĻā§āĻšāĻāύāĻ āĻ āĻĒāĻžāϰā§āĻāϰ āĻāĻā§ āĻŦāĻŋāϰāϤāĻŋ. āĻāĻĒāύāĻŋ āĻāĻŋ āĻāĻāĻžāύ⧠āĻ āύā§āϝ āĻāĻŋāĻā§ āϞāĻŋāĻāϤ⧠āĻā§āϞ⧠āĻā§āĻā§āύ?
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N12: āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻā§āĻā§
InlineCost AMDGPUInliner::getInlineCost(CallSite CS) {
Function *Callee = CS.getCalledFunction();
Function *Caller = CS.getCaller();
TargetTransformInfo &TTI = TTIWP->getTTI(*Callee);
if (!Callee || Callee->isDeclaration())
return llvm::InlineCost::getNever("undefined callee");
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-476] 'āĻā§āϝāĻžāϞāĻŋ' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 172, 174. AMDGPUInline.cpp 172
āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝāĻžāĻā§ āĻāϞ āĻāϰāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻļā§āϰā§āϤ⧠āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŋāĻāĻŋāĻāĻ āĻĒāĻžāύ.
āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻĻā§āĻāĻž āϝāĻžāĻā§āĻā§ āϝ⧠āĻāĻ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ āϏāĻŽāϤāĻžāϰ āĻāύā§āϝ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻāĻŋāϤ nullptr:
if (!Callee || Callee->isDeclaration())āĻāĻŋāύā§āϤ⧠āĻ āύā§āĻ āĻĻā§āϰāĻŋ āĻšāϝāĻŧā§ āĻā§āĻā§...
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N13 - N...: āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāĻā§āĻā§
āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻā§āĻĄ āĻāĻŖā§āĻĄā§ āĻāϞā§āĻāύāĻž āĻāϰāĻž āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻ āύāύā§āϝ āύāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻžāύ⧠āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ:
static Value *optimizeDoubleFP(CallInst *CI, IRBuilder<> &B,
bool isBinary, bool isPrecise = false) {
....
Function *CalleeFn = CI->getCalledFunction();
StringRef CalleeNm = CalleeFn->getName(); // <=
AttributeList CalleeAt = CalleeFn->getAttributes();
if (CalleeFn && !CalleeFn->isIntrinsic()) { // <=
....
}PVS-Studio āϏāϤāϰā§āĻāϤāĻž: V595 [CWE-476] 'CalleeFn' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1079, 1081. SimplifyLibCalls.cpp 1079
āĻāĻŦāĻ āĻāĻāĻžāύā§:
void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &TemplateArgs,
const Decl *Tmpl, Decl *New,
LateInstantiatedAttrVec *LateAttrs,
LocalInstantiationScope *OuterMostScope) {
....
NamedDecl *ND = dyn_cast<NamedDecl>(New);
CXXRecordDecl *ThisContext =
dyn_cast_or_null<CXXRecordDecl>(ND->getDeclContext()); // <=
CXXThisScopeRAII ThisScope(*this, ThisContext, Qualifiers(),
ND && ND->isCXXInstanceMember()); // <=
....
}PVS-Studio āϏāϤāϰā§āĻāϤāĻž: V595 [CWE-476] 'ND' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 532, 534. SemaTemplateInstantiateDecl.cpp 532
āĻāĻŦāĻ āĻāĻāĻžāύā§:
- V595 [CWE-476] 'U' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 404, 407. DWARFormValue.cpp 404
- V595 [CWE-476] 'ND' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 2149, 2151. SemaTemplateInstantiate.cpp 2149
āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻāĻŽāĻŋ V595 āύāĻŽā§āĻŦāϰ āϏāĻš āϏāϤāϰā§āĻāϤāĻž āĻ āϧā§āϝāϝāĻŧāύ āĻāϰāϤ⧠āĻāĻā§āϰāĻšā§ āĻšāϝāĻŧā§ āĻāĻ āĻŋ āύāĻžāĨ¤ āϤāĻžāĻ āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āύāĻž āĻāĻāĻžāύ⧠āϤāĻžāϞāĻŋāĻāĻžāĻā§āĻā§āϤ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāϰāĻ āĻ āύā§āϰā§āĻĒ āϤā§āϰā§āĻāĻŋ āĻāĻā§ āĻāĻŋāύāĻžāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻā§.
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N17, N18: āϏāύā§āĻĻā§āĻšāĻāύāĻ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ
static inline bool processLogicalImmediate(uint64_t Imm, unsigned RegSize,
uint64_t &Encoding) {
....
unsigned Size = RegSize;
....
uint64_t NImms = ~(Size-1) << 1;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-190] '~(āĻāĻāĻžāϰ - 1) << 1' āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ 32-āĻŦāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āĻĒāϰāĻŦāϰā§āϤ⧠āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖā§āϰ āϏāĻžāĻĨā§ 64-āĻŦāĻŋāĻ āĻŽāĻžāύā§āϰ āĻŦāĻŋāĻ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰāĨ¤ AArch64AddressingModes.h 260
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻžāĻ āύāĻžāĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻā§āĻĄāĻāĻŋ āĻ āĻŋāĻ āϝā§āĻŽāύāĻāĻŋ āĻāĻžāĻ āĻāϰā§āĨ¤ āϤāĻŦā§ āĻāĻāĻŋ āϏā§āĻĒāώā§āĻāϤāĻ āĻāĻāĻāĻŋ āĻā§āĻŦ āϏāύā§āĻĻā§āĻšāĻāύāĻ āĻāĻžāϝāĻŧāĻāĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻĻāϰāĻāĻžāϰāĨ¤
āĻāϞāĻ āĻŦāϞāĻž āϝāĻžāĻ āĻāϝāĻŧāϤāύ 16 āĻāϰ āϏāĻŽāĻžāύ, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻā§āĻĄā§āϰ āϞā§āĻāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰā§āĻāĻŋāϞā§āύ NImms āĻŽāĻžāύ:
1111111111111111111111111111111111111111111111111111111111100000
āϝāĻžāĻāĻšā§āĻ, āĻŦāĻžāϏā§āϤāĻŦā§ āĻĢāϞāĻžāĻĢāϞ āĻšāĻŦā§:
0000000000000000000000000000000011111111111111111111111111100000
āĻāϏāϞ āĻŦāĻŋāώāϝāĻŧāĻāĻŋ āĻšāϞ āϝ⧠āϏāĻŽāϏā§āϤ āĻāĻŖāύāĻž 32-āĻŦāĻŋāĻ āϏā§āĻŦāĻžāĻā§āώāϰāĻŦāĻŋāĻšā§āύ āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻā§āĨ¤ āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāϰāĻĒāϰ, āĻāĻ 32-āĻŦāĻŋāĻ āϏā§āĻŦāĻžāĻā§āώāϰāĻŦāĻŋāĻšā§āύ āĻāĻžāĻāĻĒāĻāĻŋ āύāĻŋāĻšāĻŋāϤāĻāĻžāĻŦā§ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāĻŦā§ uint64_t. āĻāĻ āĻā§āώā§āϤā§āϰā§, āϏāĻŦāĻā§āϝāĻŧā§ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āĻŦāĻŋāĻ āĻļā§āύā§āϝ āĻšāĻŦā§āĨ¤
āĻāĻĒāύāĻŋ āĻāĻ āĻŽāϤ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻ āĻŋāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
uint64_t NImms = ~static_cast<uint64_t>(Size-1) << 1;āĻ āύā§āϰā§āĻĒ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ: V629 [CWE-190] 'Immr << 6' āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ 32-āĻŦāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āĻĒāϰāĻŦāϰā§āϤ⧠āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖā§āϰ āϏāĻžāĻĨā§ 64-āĻŦāĻŋāĻ āĻŽāĻžāύā§āϰ āĻŦāĻŋāĻ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰāĨ¤ AArch64AddressingModes.h 269
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N19: āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤ āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āĻāϰ?
void AMDGPUAsmParser::cvtDPP(MCInst &Inst, const OperandVector &Operands) {
....
if (Op.isReg() && Op.Reg.RegNo == AMDGPU::VCC) {
// VOP2b (v_add_u32, v_sub_u32 ...) dpp use "vcc" token.
// Skip it.
continue;
} if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) { // <=
Op.addRegWithFPInputModsOperands(Inst, 2);
} else if (Op.isDPPCtrl()) {
Op.addImmOperands(Inst, 1);
} else if (Op.isImm()) {
// Handle optional arguments
OptionalIdx[Op.getImmTy()] = I;
} else {
llvm_unreachable("Invalid operand type");
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-670] āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āϝā§āĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύ. āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠'āĻ āύā§āϝ' āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤāĨ¤ AMDGPUAsmParser.cpp 5655
āĻāĻāĻžāύ⧠āĻā§āύ⧠āĻā§āϞ āύā§āĻāĨ¤ āϤāĻžāϰāĻĒāϰ āĻĨā§āĻā§ āĻĒā§āϰāĻĨāĻŽ āĻŦā§āϞāĻ if āĻĻāĻŋāϝāĻŧā§ āĻļā§āώ āĻšāϝāĻŧ āĻ āĻŦāĻŋāϰāϤ, āϤāĻžāĻšāϞ⧠āĻāĻāĻž āĻā§āύ āĻŦā§āϝāĻžāĻĒāĻžāϰ āύāĻž, āĻāĻāĻāĻŋ āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻā§ āĻāϰ āĻ āĻĨāĻŦāĻž āύāĻž. āϝā§āĻāĻžāĻŦā§āĻ āĻšā§āĻ āĻā§āĻĄ āĻāĻāĻ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤ āĻāĻāύāĻ āĻŽāĻŋāϏ āĻāϰāĻāĻŋ āĻāϰ āĻā§āĻĄāĻāĻŋāĻā§ āĻāϰāĻ āĻ āϏā§āĻĒāώā§āĻ āĻāĻŦāĻ āĻŦāĻŋāĻĒāĻā§āĻāύāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŦāĻŋāώā§āϝāϤ⧠āĻ āĻŦāĻŋāϰāϤ āĻ āĻĻā§āĻļā§āϝ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻā§āĻĄāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰāĻŦā§āĨ¤ āĻāĻŽāĻžāϰ āĻŽāϤ⧠āϝā§āĻ āĻāϰāĻž āĻāĻžāϞ⧠āĻāϰ.
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N20: āĻāĻāĻ āϧāϰāύā§āϰ āĻāĻžāϰāĻāĻŋ āĻāĻžāĻāĻĒā§
LLVM_DUMP_METHOD void Symbol::dump(raw_ostream &OS) const {
std::string Result;
if (isUndefined())
Result += "(undef) ";
if (isWeakDefined())
Result += "(weak-def) ";
if (isWeakReferenced())
Result += "(weak-ref) ";
if (isThreadLocalValue())
Result += "(tlv) ";
switch (Kind) {
case SymbolKind::GlobalSymbol:
Result + Name.str(); // <=
break;
case SymbolKind::ObjectiveCClass:
Result + "(ObjC Class) " + Name.str(); // <=
break;
case SymbolKind::ObjectiveCClassEHType:
Result + "(ObjC Class EH) " + Name.str(); // <=
break;
case SymbolKind::ObjectiveCInstanceVariable:
Result + "(ObjC IVar) " + Name.str(); // <=
break;
}
OS << Result;
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž:
- V655 [CWE-480] āϏā§āĻā§āϰāĻŋāĻāĻā§āϞāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāĻŋāϞ āĻāĻŋāύā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'Result + Name.str()' āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ Symbol.cpp 32
- V655 [CWE-480] āϏā§āĻā§āϰāĻŋāĻāĻā§āϞāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāĻŋāϞ āĻāĻŋāύā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC āĻā§āϞāĻžāϏ)" + Name.str()' āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ Symbol.cpp 35
- V655 [CWE-480] āϏā§āĻā§āϰāĻŋāĻāĻā§āϞāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāĻŋāϞ āĻāĻŋāύā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC āĻā§āϞāĻžāϏ EH) " + Name.str()' āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻāϰāĻžāϰ āĻāĻĨāĻž āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ Symbol.cpp 38
- V655 [CWE-480] āϏā§āĻā§āϰāĻŋāĻāĻā§āϞāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāĻŋāϞ āĻāĻŋāύā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻŋ⧎ 'āĻĢāϞāĻžāĻĢāϞ + "(ObjC IVar)" + Name.str()' āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻĒāϰāĻŋāĻĻāϰā§āĻļāύ āĻāϰāĻžāϰ āĻāĻĨāĻž āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύāĨ¤ Symbol.cpp 41
āĻĻā§āϰā§āĻāĻāύāĻžāĻā§āϰāĻŽā§, += āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠+ āĻ āĻĒāĻžāϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻĢāϞāĻžāĻĢāϞ āĻšāϞ āĻāĻŽāύ āĻĄāĻŋāĻāĻžāĻāύ āϝāĻž āĻ āϰā§āĻĨāĻšā§āύāĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N21: āĻ āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻāĻāϰāĻŖ
static void getReqFeatures(std::map<StringRef, int> &FeaturesMap,
const std::vector<Record *> &ReqFeatures) {
for (auto &R : ReqFeatures) {
StringRef AsmCondString = R->getValueAsString("AssemblerCondString");
SmallVector<StringRef, 4> Ops;
SplitString(AsmCondString, Ops, ",");
assert(!Ops.empty() && "AssemblerCondString cannot be empty");
for (auto &Op : Ops) {
assert(!Op.empty() && "Empty operator");
if (FeaturesMap.find(Op) == FeaturesMap.end())
FeaturesMap[Op] = FeaturesMap.size();
}
}
}āĻŦāĻŋāĻĒāĻā§āĻāύāĻ āĻā§āĻĄ āύāĻŋāĻā§āĻ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύ. āĻāĻŦāĻ āĻāĻāĻŋ āĻŽāύā§āϝā§āĻ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āϝāĻžāϤ⧠āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻāϤā§āϤāϰāĻāĻŋ āĻĻā§āĻāϤ⧠āύāĻž āĻĒāĻžāϰā§:

PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-758] āĻŦāĻŋāĻĒāĻā§āĻāύāĻ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ: 'FeaturesMap[Op] = FeaturesMap.size()', āϝā§āĻāĻžāύ⧠'FeaturesMap' 'āĻŽā§āϝāĻžāĻĒ' āĻļā§āϰā§āĻŖā§āϰāĨ¤ āĻāĻāĻŋ āĻ āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻāĻāϰāĻŖā§āϰ āĻĻāĻŋāĻā§ āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ RISCVCompressInstEmitter.cpp 490
āϏāĻŽāϏā§āϝāĻž āϞāĻžāĻāύ:
FeaturesMap[Op] = FeaturesMap.size();āϝāĻĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ Op āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻž, āϤāĻžāϰāĻĒāϰ āĻŽāĻžāύāĻāĻŋāϤā§āϰ⧠āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻ āĻŽāĻžāύāĻāĻŋāϤā§āϰā§āϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāϰ āϏāĻāĻā§āϝāĻž āϏā§āĻāĻžāύ⧠āϞā§āĻāĻž āĻšāϝāĻŧāĨ¤ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšāĻŦā§ āĻāĻŋāύāĻž āϤāĻž āĻ āĻŋāĻ āĻ āĻāĻžāύāĻž āĻāϝāĻŧāϤāύ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰāĻžāϰ āĻāĻā§ āĻŦāĻž āĻĒāϰā§āĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N22-N24: āĻŦāĻžāϰāĻŦāĻžāϰ āĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻ
Error MachOObjectFile::checkSymbolTable() const {
....
} else {
MachO::nlist STE = getSymbolTableEntry(SymDRI);
NType = STE.n_type; // <=
NType = STE.n_type; // <=
NSect = STE.n_sect;
NDesc = STE.n_desc;
NStrx = STE.n_strx;
NValue = STE.n_value;
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-563] 'NType' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻāĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1663, 1664. MachOObjectFile.cpp 1664
āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āύāĻž āĻāĻāĻžāύ⧠āĻĒā§āϰāĻā§āϤ āĻā§āϞ āĻāĻā§āĨ¤ āĻļā§āϧ⧠āĻāĻāĻāĻŋ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻ. āĻāĻŋāύā§āϤ⧠āĻāĻāύāĻ āĻāĻāĻāĻŋ āĻā§āϞ.
āĻāĻāĻāĻāĻžāĻŦā§:
- V519 [CWE-563] 'B.NDesc' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1488, 1489. llvm-nm.cpp 1489
- V519 [CWE-563] āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻāĻŋāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 59, 61. coff2yaml.cpp 61
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N25-N27: āĻāϰāĻ āϰāĻŋāĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻ
āĻāĻāύ āĻĒā§āύāĻāĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻā§āϰ āĻāĻāĻāĻŋ āϏāĻžāĻŽāĻžāύā§āϝ āĻāĻŋāύā§āύ āϏāĻāϏā§āĻāϰāĻŖ āϤāĻžāĻāĻžāύ.
bool Vectorizer::vectorizeLoadChain(
ArrayRef<Instruction *> Chain,
SmallPtrSet<Instruction *, 16> *InstructionsProcessed) {
....
unsigned Alignment = getAlignment(L0);
....
unsigned NewAlign = getOrEnforceKnownAlignment(L0->getPointerOperand(),
StackAdjustedAlignment,
DL, L0, nullptr, &DT);
if (NewAlign != 0)
Alignment = NewAlign;
Alignment = NewAlign;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V519 [CWE-563] 'āĻ ā§āϝāĻžāϞāĻžāĻāύāĻŽā§āύā§āĻ' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1158, 1160. LoadStoreVectorizer.cpp 1160
āĻāĻāĻŋ āĻā§āĻŦ āĻ āĻĻā§āĻā§āϤ āĻā§āĻĄ āϝāĻž āĻĻā§āĻļā§āϝāϤ āĻāĻāĻāĻŋ āϞāĻāĻŋāĻā§āϝāĻžāϞ āϤā§āϰā§āĻāĻŋ āϰāϝāĻŧā§āĻā§āĨ¤ āĻļā§āϰā§āϤā§, āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻļā§āϰā§āĻŖā§āĻŦāĻŋāύā§āϝāĻžāϏ āĻļāϰā§āϤā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻŽāĻžāύ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻ āĻāĻŦāĻžāϰ āĻāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻāύ āĻā§āύ āĻā§āĻ āĻāĻžāĻĄāĻŧāĻž.
āĻ āύā§āϰā§āĻĒ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻāĻāĻžāύ⧠āĻĻā§āĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
- V519 [CWE-563] 'āĻāĻĢā§āĻā§āĻ' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 152, 165. WebAssemblyRegStackify.cpp 165
- V519 [CWE-563] 'ExpectNoDerefChunk' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĒāϰāĻĒāϰ āĻĻā§āĻŦāĻžāϰ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ. āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 4970, 4973. SemaType.cpp 4973
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N28: āϏāϰā§āĻŦāĻĻāĻž āϏāϤā§āϝ āĻ āĻŦāϏā§āĻĨāĻž
static int readPrefixes(struct InternalInstruction* insn) {
....
uint8_t byte = 0;
uint8_t nextByte;
....
if (byte == 0xf3 && (nextByte == 0x88 || nextByte == 0x89 ||
nextByte == 0xc6 || nextByte == 0xc7)) {
insn->xAcquireRelease = true;
if (nextByte != 0x90) // PAUSE instruction support // <=
break;
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-571] āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ 'nextByte != 0x90' āϏāϰā§āĻŦāĻĻāĻž āϏāϤā§āϝāĨ¤ X86DisassemblerDecoder.cpp 379
āĻā§āĻ āĻāϰāĻž āĻŽāĻžāύ⧠āύāĻž. āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āύā§āĻā§āϏāĻāĻŦāĻžāĻāĻ āϏāĻŦāϏāĻŽāϝāĻŧ āĻŽāĻžāύā§āϰ āϏāĻŽāĻžāύ āύāϝāĻŧ 0x90, āϝāĻž āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻā§āĻ āĻĨā§āĻā§ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻāϧāϰāύā§āϰ āϝā§āĻā§āϤāĻŋāĻ āϤā§āϰā§āĻāĻŋāĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N29 - N...: āϏāϰā§āĻŦāĻĻāĻž āϏāϤā§āϝ/āĻŽāĻŋāĻĨā§āϝāĻž āĻļāϰā§āϤ
āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻ āύā§āĻ āϏāϤāϰā§āĻāϤāĻž āĻāĻžāϰāĻŋ āĻāϰ⧠āϝ⧠āϏāĻŽāĻā§āϰ āĻ āĻŦāϏā§āĻĨāĻž () āĻŦāĻž āĻāϰ āĻ āĻāĻļ () āϏāϰā§āĻŦāĻĻāĻž āϏāϤā§āϝ āĻŦāĻž āĻŽāĻŋāĻĨā§āϝāĻžāĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻāĻā§āϞāĻŋ āĻāϏāϞ āϤā§āϰā§āĻāĻŋ āύāϝāĻŧ, āϤāĻŦā§ āĻā§āĻŦāϞ āϏā§āϞā§āĻĒāĻŋ āĻā§āĻĄ, āĻŽā§āϝāĻžāĻā§āϰ⧠āϏāĻŽā§āĻĒā§āϰāϏāĻžāϰāĻŖā§āϰ āĻĢāϞāĻžāĻĢāϞ āĻāĻŦāĻ āĻāϰ āĻŽāϤā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāĻ āϏāĻŽāϏā§āϤ āϏāϤāϰā§āĻāĻŦāĻžāĻŖā§āϰ āĻĻāĻŋāĻā§ āϤāĻžāĻāĻžāύ⧠āĻŦā§āϧāĻāĻŽā§āϝ, āĻāĻžāϰāĻŖ āĻĒā§āϰāĻā§āϤ āϝā§āĻā§āϤāĻŋāĻ āϤā§āϰā§āĻāĻŋ āϏāĻŽāϝāĻŧā§ āϏāĻŽāϝāĻŧā§ āĻāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻā§āĻĄā§āϰ āĻāĻ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āϏāύā§āĻĻā§āĻšāĻāύāĻ:
static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, unsigned RegNo,
uint64_t Address, const void *Decoder) {
DecodeStatus S = MCDisassembler::Success;
if (RegNo > 13)
return MCDisassembler::Fail;
if ((RegNo & 1) || RegNo == 0xe)
S = MCDisassembler::SoftFail;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-570] āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāϰ āĻāĻāĻāĻŋ āĻ āĻāĻļ āϏāϰā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻž: RegNo == 0xeāĨ¤ ARMDisassembler.cpp 939
āϧā§āϰā§āĻŦāĻ 0xE āĻšāϞ āĻĻāĻļāĻŽāĻŋāĻā§āϰ āĻŽāĻžāύ 14āĨ¤ āĻĒāϰā§āĻā§āώāĻž RegNo == 0xe āĻŽāĻžāύ⧠āύāĻž āĻāĻžāϰāĻŖ āϝāĻĻāĻŋ RegNo > 13, āϤāĻžāĻšāϞ⧠āĻĢāĻžāĻāĻļāύāĻāĻŋ āϤāĻžāϰ āĻāĻžāϰā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύ āϏāĻŽā§āĻĒāύā§āύ āĻāϰāĻŦā§āĨ¤
āĻāĻāĻĄāĻŋ V547 āĻāĻŦāĻ V560 āĻāϰ āϏāĻžāĻĨā§ āĻāϰāĻ āĻ āύā§āĻ āϏāϤāϰā§āĻāϤāĻž āĻāĻŋāϞ, āϤāĻŦā§ āĻāϰ āϏāĻžāĻĨā§ , āĻāĻŽāĻŋ āĻāĻ āϏāϤāϰā§āĻāϤāĻž āĻ āϧā§āϝāϝāĻŧāύ āĻāϰāϤ⧠āĻāĻā§āϰāĻšā§ āĻāĻŋāϞ āύāĻž. āĻāĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āϏā§āĻĒāώā§āĻ āĻāĻŋāϞ āϝ⧠āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āύāĻŋāĻŦāύā§āϧ āϞā§āĻāĻžāϰ āĻāύā§āϝ āϝāĻĨā§āώā§āĻ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻŋāϞ :)āĨ¤ āĻ āϤāĻāĻŦ, āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāϞāĻāϞāĻāĻŋāĻāĻŽ-āĻ āĻāĻ āϧāϰāĻŖā§āϰ āĻāϤāĻā§āϞāĻŋ āϤā§āϰā§āĻāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāĻž āϝāĻžāϝāĻŧ āϤāĻž āĻ āĻāĻžāύāĻžāĨ¤
āĻāĻŽāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻŦ āĻā§āύ āĻāĻ āĻā§āϰāĻŋāĻāĻžāϰāĻā§āϞāĻŋ āĻ āϧā§āϝāϝāĻŧāύ āĻāϰāĻž āĻŦāĻŋāϰāĻā§āϤāĻŋāĻāϰāĨ¤ āĻŦāĻŋāĻļā§āϞā§āώāĻ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻā§āĻĄā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻāĻžāϰāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻā§āĻŦāĻžāϰ⧠āϏāĻ āĻŋāĻāĨ¤ āϤāĻŦā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ āύāϝāĻŧāĨ¤
bool UnwrappedLineParser::parseBracedList(bool ContinueOnSemicolons,
tok::TokenKind ClosingBraceKind) {
bool HasError = false;
....
HasError = true;
if (!ContinueOnSemicolons)
return !HasError;
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V547 [CWE-570] āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ '!HasError' āϏāϰā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻžāĨ¤ UnwrappedLineParser.cpp 1635
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N30: ââāϏāύā§āĻĻā§āĻšāĻāύāĻ āϰāĻŋāĻāĻžāϰā§āύ
static bool
isImplicitlyDef(MachineRegisterInfo &MRI, unsigned Reg) {
for (MachineRegisterInfo::def_instr_iterator It = MRI.def_instr_begin(Reg),
E = MRI.def_instr_end(); It != E; ++It) {
return (*It).isImplicitDef();
}
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-670] āĻāĻāĻāĻŋ āϞā§āĻĒā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻļāϰā§āϤāĻšā§āύ 'āϰāĻŋāĻāĻžāϰā§āύ'āĨ¤ R600OptimizeVectorRegisters.cpp 63
āĻāĻāĻŋ āĻšāϝāĻŧ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻŦāĻž āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āĻļāϞ āϝāĻž āĻā§āĻĄ āĻĒāĻžāĻ āĻāĻžāϰ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻžāϰāĻĻā§āϰ āĻāĻŋāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻžāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝā§āĨ¤ āĻāĻ āύāĻāĻļāĻžāĻāĻŋ āĻāĻŽāĻžāĻā§ āĻāĻŋāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰ⧠āύāĻž āĻāĻŦāĻ āĻā§āĻŦ āϏāύā§āĻĻā§āĻšāĻāύāĻ āĻĻā§āĻāĻžāϝāĻŧāĨ¤ āĻāĻāĻžāĻŦā§ āύāĻž āϞā§āĻāĻžāĻ āĻāĻžāϞ⧠:)
āĻā§āϞāĻžāύā§āϤ? āϤāĻžāϰāĻĒāϰ āĻāĻž āĻŦāĻž āĻāĻĢāĻŋ āĻŦāĻžāύāĻžāύā§āϰ āĻĒāĻžāϞāĻžāĨ¤

āύāϤā§āύ āĻĄāĻžāϝāĻŧāĻāύāĻŋāϏā§āĻāĻŋāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻŋāĻšā§āύāĻŋāϤ āϤā§āϰā§āĻāĻŋ
āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āĻĒā§āϰāĻžāύ⧠āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāĻā§āϞāĻŋāϰ 30 āĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧāĻāϰāĻŖ āϝāĻĨā§āώā§āĻāĨ¤ āĻāϏā§āύ āĻāĻāύ āĻĻā§āĻāĻŋ āύāϤā§āύ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāϏā§āϰ āϏāĻžāĻĨā§ āĻā§ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻāĻŋāύāĻŋāϏ āĻĒāĻžāĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϝāĻž āĻŦāĻŋāĻļā§āϞā§āώāĻā§āϰ āĻĒāϰ⧠āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ āĻā§āĻ āĻāĻ āϏāĻŽāϝāĻŧā§, C++ āĻŦāĻŋāĻļā§āϞā§āώāĻāĻāĻŋāϤ⧠āĻŽā§āĻ 66āĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ-āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N31: āĻĒā§āĻāĻāĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻž āĻāĻŽāύ āĻā§āĻĄ
Error CtorDtorRunner::run() {
....
if (auto CtorDtorMap =
ES.lookup(JITDylibSearchList({{&JD, true}}), std::move(Names),
NoDependenciesToRegister, true))
{
....
return Error::success();
} else
return CtorDtorMap.takeError();
CtorDtorsByPriority.clear();
return Error::success();
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-561] āύāĻžāĻāĻžāϞāϝā§āĻā§āϝ āĻā§āĻĄ āĻļāύāĻžāĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻāĻā§. ExecutionUtils.cpp 146
āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ, āĻ āĻĒāĻžāϰā§āĻāϰ āĻāĻāϝāĻŧ āĻļāĻžāĻāĻž if āĻ āĻĒāĻžāϰā§āĻāϰāĻā§ āĻāĻāĻāĻŋ āĻāϞ āĻĻāĻŋāϝāĻŧā§ āĻļā§āώ āĻšāϝāĻŧ āĻĒā§āϰāϤā§āϝāĻžāĻŦāϰā§āϤāύ. āϏā§āĻ āĻ āύā§āϝāĻžāϝāĻŧā§ āϧāĻžāϰāĻ CtorDtorsBy Priority āĻāĻāύāĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰāĻž āĻšāĻŦā§ āύāĻžāĨ¤
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N32: āĻĒā§āĻāĻāĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻž āĻāĻŽāύ āĻā§āĻĄ
bool LLParser::ParseSummaryEntry() {
....
switch (Lex.getKind()) {
case lltok::kw_gv:
return ParseGVEntry(SummaryID);
case lltok::kw_module:
return ParseModuleEntry(SummaryID);
case lltok::kw_typeid:
return ParseTypeIdEntry(SummaryID); // <=
break; // <=
default:
return Error(Lex.getLoc(), "unexpected summary kind");
}
Lex.setIgnoreColonInIdentifiers(false); // <=
return false;
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: V779 [CWE-561] āύāĻžāĻāĻžāϞāϝā§āĻā§āϝ āĻā§āĻĄ āĻļāύāĻžāĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻāĻā§. LLParser.cpp 835
āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāĨ¤ āĻāϏā§āύ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāĻāĻŋ āĻĻā§āĻāĻŋ:
return ParseTypeIdEntry(SummaryID);
break;āĻĒā§āϰāĻĨāĻŽ āύāĻāϰā§, āĻŽāύ⧠āĻšāĻā§āĻā§ āĻāĻāĻžāύ⧠āĻā§āύ āϤā§āϰā§āĻāĻŋ āύā§āĻāĨ¤ āĻāĻāĻž āĻ āĻĒāĻžāϰā§āĻāϰ āĻŽāϤ āĻĻā§āĻāĻžāϝāĻŧ āĻŦāĻŋāϰāϤāĻŋ āĻāĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻā§, āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āϝāĻžāĻāĻšā§āĻ, āϏāĻŦ āĻāϤ āϏāĻšāĻ āύāϝāĻŧāĨ¤
āĻŦāĻŋāĻļā§āϞā§āώāĻ āϞāĻžāĻāύāĻā§āϞāĻŋāϤ⧠āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻāĻžāϰāĻŋ āĻāϰā§:
Lex.setIgnoreColonInIdentifiers(false);
return false;āĻāĻŦāĻ āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώā§, āĻāĻ āĻā§āĻĄāĻāĻŋ āĻĒā§āĻāĻāĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻžāĨ¤ āĻŽāϧā§āϝ⧠āϏāĻŦ āĻā§āώā§āϤā§āϰ⧠āϏā§āĻāĻ āĻ āĻĒāĻžāϰā§āĻāϰ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāϞ āĻĻāĻŋāϝāĻŧā§ āĻļā§āώ āĻšāϝāĻŧ āĻĒā§āϰāϤā§āϝāĻžāĻŦāϰā§āϤāύ. āĻāϰ āĻāĻāύ āĻāĻāĻž āĻāĻāĻž āĻŦāĻŋāϰāϤāĻŋ āĻāϤ āύāĻŋāϰā§āĻš āĻĻā§āĻāĻžāϝāĻŧ āύāĻž! āϏāĻŽā§āĻāĻŦāϤ āĻļāĻžāĻāĻžāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻĻāĻŋāϝāĻŧā§ āĻļā§āώ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āĻŦāĻŋāϰāϤāĻŋ, āύāĻž āĻĒā§āϰāϤā§āϝāĻžāĻŦāϰā§āϤāύ?
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N33: āĻāĻā§āĻ āĻŦāĻŋāĻā§āϰ āϰā§āϝāĻžāύā§āĻĄāĻŽ āϰāĻŋāϏā§āĻ
unsigned getStubAlignment() override {
if (Arch == Triple::systemz)
return 8;
else
return 1;
}
Expected<unsigned>
RuntimeDyldImpl::emitSection(const ObjectFile &Obj,
const SectionRef &Section,
bool IsCode) {
....
uint64_t DataSize = Section.getSize();
....
if (StubBufSize > 0)
DataSize &= ~(getStubAlignment() - 1);
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: āĻŦāĻŋāĻ āĻŽāĻžāϏā§āĻā§āϰ āĻāĻāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ āĻĒāĻžāϰā§āύā§āĻĄā§āϰ āĻāĻāĻžāϰā§āϰ āĻā§āϝāĻŧā§ āĻāĻŽāĨ¤ āĻāĻāĻŋ āĻāĻā§āĻāϤāϰ āĻŦāĻŋāĻāĻā§āϞāĻŋāϰ āĻā§āώāϤāĻŋāϰ āĻāĻžāϰāĻŖ āĻšāĻŦā§āĨ¤ RuntimeDyld.cpp 815
āĻ āύā§āĻā§āϰāĻš āĻāϰ⧠āύā§āĻ āĻāϰā§āύ āϝ⧠āĻĢāĻžāĻāĻļāύ GetStubAlignment āϰāĻŋāĻāĻžāϰā§āύ āĻāĻžāĻāĻĒ āĻ āϏā§āĻŦāĻžāĻā§āώāϰāĻŋāϤ. āĻāϏā§āύ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύā§āϰ āĻŽāĻžāύ āĻāĻŖāύāĻž āĻāϰāĻŋ, āϧāϰ⧠āύāĻŋāĻ āϝ⧠āĻĢāĻžāĻāĻļāύāĻāĻŋ 8 āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§:
~( getStubAlignment() - 1)
~(8u-1)
0xFFFFFFFF8u
āĻāĻāύ āϝ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āϞāĻā§āώā§āϝ āĻāϰā§āύ āĻĄā§āĻāĻž āϏāĻžāĻāĻ āĻāĻāĻāĻŋ 64-āĻŦāĻŋāĻ āϏā§āĻŦāĻžāĻā§āώāϰāĻŦāĻŋāĻšā§āύ āĻāĻžāĻāĻĒ āĻāĻā§āĨ¤ āĻĻā§āĻāĻž āϝāĻžāĻā§āĻā§ āϝ⧠DataSize āĻāĻŦāĻ 0xFFFFFFF8u āĻ āĻĒāĻžāϰā§āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϏāĻŽāϏā§āϤ āĻŦāϤā§āϰāĻŋāĻļāĻāĻŋ āĻšāĻžāĻ-āĻ āϰā§āĻĄāĻžāϰ āĻŦāĻŋāĻ āĻļā§āύā§āϝ⧠āϰāĻŋāϏā§āĻ āĻāϰāĻž āĻšāĻŦā§āĨ¤ āϏāĻŽā§āĻāĻŦāϤ, āĻāĻāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻžāϰ āϝāĻž āĻā§āϝāĻŧā§āĻāĻŋāϞā§āύ āϤāĻž āύāϝāĻŧāĨ¤ āĻāĻŽāĻŋ āϏāύā§āĻĻā§āĻš āĻāϰāĻŋ āϝ⧠āϤāĻŋāύāĻŋ āĻāĻŖāύāĻž āĻāϰāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞā§āύ: āĻĄā§āĻāĻž āϏāĻžāĻāĻ āĻāĻŦāĻ 0xFFFFFFFFFFFFFF8uāĨ¤
āϤā§āϰā§āĻāĻŋāĻāĻŋ āĻ āĻŋāĻ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ āϞāĻŋāĻāϤ⧠āĻšāĻŦā§:
DataSize &= ~(static_cast<uint64_t>(getStubAlignment()) - 1);āĻŦāĻž āϤāĻžāĻ:
DataSize &= ~(getStubAlignment() - 1ULL);āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N34: āĻŦā§āϝāϰā§āĻĨ āϏā§āĻĒāώā§āĻ āĻāĻžāĻāĻĒ āĻāĻžāϏā§āĻ
template <typename T>
void scaleShuffleMask(int Scale, ArrayRef<T> Mask,
SmallVectorImpl<T> &ScaledMask) {
assert(0 < Scale && "Unexpected scaling factor");
int NumElts = Mask.size();
ScaledMask.assign(static_cast<size_t>(NumElts * Scale), -1);
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-190] āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻāĻāĻžāϰāĻĢā§āϞā§āĨ¤ 'NumElts * Scale' āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻāĻžāϏā§āĻāĻŋāĻ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻā§āϞāĻŋāĻā§ 'size_t' āĻĒā§āϰāĻāĻžāϰ⧠āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āύ, āĻĢāϞāĻžāĻĢāϞ āύāϝāĻŧāĨ¤ X86ISelLowering.h 1577
āĻāĻžāĻāĻĒ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻā§āύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻžāϰāĻĢā§āϞ⧠āĻāĻĄāĻŧāĻžāϤ⧠āϏā§āĻĒāώā§āĻ āĻāĻžāĻāĻĒ āĻāĻžāϏā§āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āĻā§āύ int. āϝāĻžāĻāĻšā§āĻ, āĻāĻāĻžāύ⧠āϏā§āĻĒāώā§āĻ āĻāĻžāĻāĻĒ āĻāĻžāϏā§āĻāĻŋāĻ āĻāĻāĻžāϰāĻĢā§āϞ⧠āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰ⧠āύāĻžāĨ¤ āĻĒā§āϰāĻĨāĻŽā§, āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§āϞāĻŋāĻā§ āĻā§āĻŖāĻŋāϤ āĻāϰāĻž āĻšāĻŦā§, āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāϰāĻĒāϰ āĻā§āĻŖāύā§āϰ 32-āĻŦāĻŋāĻ āĻĢāϞāĻžāĻĢāϞāĻāĻŋ āĻāĻžāĻāĻĒā§ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāĻŦā§ .
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N35: āĻŦā§āϝāϰā§āĻĨ āĻāĻĒāĻŋ-āĻĒā§āϏā§āĻ
Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) {
....
if (!match(Op0, m_PosZeroFP()) && isKnownNeverNaN(Op0, &TLI)) {
I.setOperand(0, ConstantFP::getNullValue(Op0->getType()));
return &I;
}
if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
I.setOperand(1, ConstantFP::getNullValue(Op0->getType())); // <=
return &I;
}
....
}[CWE-682] āĻĻā§āĻāĻŋ āĻ āύā§āϰā§āĻĒ āĻā§āĻĄ āĻā§āĻāϰāĻž āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āĻā§. āϏāĻŽā§āĻāĻŦāϤ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒā§ āĻāĻŦāĻ 'Op1' āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠'Op0' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ InstCombineCompares.cpp 5507
āĻāĻ āύāϤā§āύ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāĻāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤ⧠āϏāύāĻžāĻā§āϤ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻ āĻāĻļ āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāϤ⧠āĻāĻŋāĻā§ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻļā§āϰ⧠āĻšāϝāĻŧā§āĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϤāĻžāϰāĻž āĻāĻāĻŋ āϏāĻāĻļā§āϧāύ āĻāϰā§āύāĻŋāĨ¤
āĻĻāϝāĻŧāĻž āĻāϰ⧠āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻŦā§āϞāĻā§ āϤāĻžāϰāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧā§āĻā§ āĻ āĻĒā§Ģ āĻāĻĒāϰ āĻ āĻĒā§Ģ. āĻāĻŋāύā§āϤ⧠āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϤāĻžāϰāĻž āĻ āĻŋāĻ āĻāϰā§āύāĻŋāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻŋ āĻāĻ āĻŽāϤ āϞā§āĻāĻž āĻāĻāĻŋāϤ āĻāĻŋāϞ:
if (!match(Op1, m_PosZeroFP()) && isKnownNeverNaN(Op1, &TLI)) {
I.setOperand(1, ConstantFP::getNullValue(Op1->getType()));
return &I;
}āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N36: āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤāĻŋ
struct Status {
unsigned Mask;
unsigned Mode;
Status() : Mask(0), Mode(0){};
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
Mode &= Mask;
};
....
};PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-563] 'āĻŽā§āĻĄ' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύā§āϤ⧠āĻĢāĻžāĻāĻļāύā§āϰ āĻļā§āώ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ SIModeRegister.cpp 48
āĻĢāĻžāĻāĻļāύ āĻāϰā§āĻā§āĻŽā§āύā§āĻāĻā§ āĻā§āϞāĻžāϏ āĻŽā§āĻŽā§āĻŦāĻžāϰāĻĻā§āϰ āĻŽāϤ⧠āĻāĻāĻ āύāĻžāĻŽ āĻĻā§āĻāϝāĻŧāĻž āĻā§āĻŦāĻ āĻŦāĻŋāĻĒāĻā§āĻāύāĻāĨ¤ āĻāĻāĻž āĻŦāĻŋāĻā§āϰāĻžāύā§āϤ āĻāϰāĻž āĻā§āĻŦ āϏāĻšāĻ. āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻŽāύ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻŽāĻžāĻŽāϞāĻž āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻ āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋ āĻ āϰā§āĻĨāĻĒā§āϰā§āĻŖ āύāϝāĻŧ:
Mode &= Mask;āĻĢāĻžāĻāĻļāύ āϝā§āĻā§āϤāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ. āĻāĻāĻžāύā§āĻ āĻļā§āώ. āĻāĻ āϝā§āĻā§āϤāĻŋ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻž. āϏāĻŽā§āĻāĻŦāϤ āĻāĻĒāύāĻžāϰ āĻāĻāĻŋ āĻāĻāĻžāĻŦā§ āϞā§āĻāĻž āĻāĻāĻŋāϤ āĻāĻŋāϞ:
Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {
this->Mode &= Mask;
};āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N37: āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤāĻŋ
class SectionBase {
....
uint64_t Size = 0;
....
};
class SymbolTableSection : public SectionBase {
....
};
void SymbolTableSection::addSymbol(Twine Name, uint8_t Bind, uint8_t Type,
SectionBase *DefinedIn, uint64_t Value,
uint8_t Visibility, uint16_t Shndx,
uint64_t Size) {
....
Sym.Value = Value;
Sym.Visibility = Visibility;
Sym.Size = Size;
Sym.Index = Symbols.size();
Symbols.emplace_back(llvm::make_unique<Symbol>(Sym));
Size += this->EntrySize;
}āϏāϤāϰā§āĻā§āĻāϰāĻŖ PVS-Studio: V1001 [CWE-563] 'āĻāĻāĻžāϰ' āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύā§āϤ⧠āĻĢāĻžāĻāĻļāύā§āϰ āĻļā§āώ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ Object.cpp 424
āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻāĻā§āϰ āĻŽāϤā§āĻāĨ¤ āĻāĻāĻž āϞā§āĻāĻž āĻāĻāĻŋāϤ:
this->Size += this->EntrySize;āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N38-N47: āϤāĻžāϰāĻž āϏā§āĻāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻā§āϞ⧠āĻā§āĻā§
āĻĒā§āϰā§āĻŦā§, āĻāĻŽāϰāĻž āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻ āĻā§āϰāĻŋāĻāĻžāϰāĻŋāĻāϝāĻŧā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻā§āĻāĻŋ . āĻāϰ āϏāĻžāϰāĻŽāϰā§āĻŽ āĻšāϞ āϝ⧠āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ āĻļā§āϰā§āϤ⧠āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāϰāĻĒāϰ āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϤāϰā§āĻŖ āĻĄāĻžāϝāĻŧāĻžāĻāύāϏā§āĻāĻŋāĻāϏ āĻ āϰā§āĻĨā§āϰ āĻŦāĻŋāĻĒāϰā§āϤ, āĻāĻŋāύā§āϤ⧠āĻ āύā§āĻ āϤā§āϰā§āĻāĻŋāĻ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ āĻļā§āϰā§āϤ⧠āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āϤāĻž āĻāϰāϤ⧠āĻā§āϞ⧠āĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāϏā§āύ LLVM-āĻāϰ āĻāĻŋāϤāϰ⧠āĻĒāĻžāĻāϝāĻŧāĻž āĻāĻ āϧāϰāύā§āϰ āĻā§āϏāĻā§āϞ⧠āĻĻā§āĻāĻŋāĨ¤
int getGEPCost(Type *PointeeType, const Value *Ptr,
ArrayRef<const Value *> Operands) {
....
if (Ptr != nullptr) { // <=
assert(....);
BaseGV = dyn_cast<GlobalValue>(Ptr->stripPointerCasts());
}
bool HasBaseReg = (BaseGV == nullptr);
auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType()); // <=
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻā§āĻāϰāĻŖ: V1004 [CWE-476] 'Ptr' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 729, 738. TargetTransformInfoImpl.h 738
āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ ptr āϏāĻŽāĻžāύ āĻšāϤ⧠āĻĒāĻžāϰ⧠nullptr, āĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ:
if (Ptr != nullptr)āϝāĻžāĻāĻšā§āĻ, āĻāĻ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĒāϰā§āĻā§āώāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĄāĻŋāϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
auto PtrSizeBits = DL.getPointerTypeSizeInBits(Ptr->getType());āĻāϏā§āύ āĻāϰā§āĻāĻāĻŋ āĻ āύā§āϰā§āĻĒ āĻā§āϏ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āϝāĻžāĻāĨ¤
llvm::DISubprogram *CGDebugInfo::getFunctionFwdDeclOrStub(GlobalDecl GD,
bool Stub) {
....
auto *FD = dyn_cast<FunctionDecl>(GD.getDecl());
SmallVector<QualType, 16> ArgTypes;
if (FD) // <=
for (const ParmVarDecl *Parm : FD->parameters())
ArgTypes.push_back(Parm->getType());
CallingConv CC = FD->getType()->castAs<FunctionType>()->getCallConv(); // <=
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻā§āĻāϰāĻŖ: V1004 [CWE-476] 'FD' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 3228, 3231. CGDebugInfo.cpp 3231
āĻāĻŋāĻšā§āύā§āϰ āĻĻāĻŋāĻā§ āĻŽāύā§āϝā§āĻ āĻĻāĻŋāύ FD. āĻāĻŽāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āϝ⧠āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āĻāĻŦāĻ āĻā§āύ āĻŦāĻŋāĻļā§āώ āĻŦā§āϝāĻžāĻā§āϝāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤
āĻāĻŦāĻ āĻāϰāĻ:
static void computePolynomialFromPointer(Value &Ptr, Polynomial &Result,
Value *&BasePtr,
const DataLayout &DL) {
PointerType *PtrTy = dyn_cast<PointerType>(Ptr.getType());
if (!PtrTy) { // <=
Result = Polynomial();
BasePtr = nullptr;
}
unsigned PointerBits =
DL.getIndexSizeInBits(PtrTy->getPointerAddressSpace()); // <=
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻā§āĻāϰāĻŖ: V1004 [CWE-476] 'PtrTy' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 960, 965. InterleavedLoadCombinePass.cpp 965
āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āϧāϰāύā§āϰ āϤā§āϰā§āĻāĻŋ āĻĨā§āĻā§ āύāĻŋāĻā§āĻā§ āϰāĻā§āώāĻž āĻāϰāĻŦā§āύ? āĻā§āĻĄ-āϰāĻŋāĻāĻŋāĻāϤ⧠āĻāϰāĻ āĻŽāύā§āϝā§āĻā§ āĻšāύ āĻāĻŦāĻ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāĻĒāύāĻžāϰ āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠PVS-Studio āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
āĻāĻ āϧāϰāĻŖā§āϰ āϤā§āϰā§āĻāĻŋ āϏāĻš āĻ āύā§āϝāĻžāύā§āϝ āĻā§āĻĄā§āϰ āĻāĻŖā§āĻĄāĻā§āϞāĻŋ āĻāĻĻā§āϧā§āϤ āĻāϰāĻžāϰ āĻā§āύāĻ āĻ āϰā§āĻĨ āύā§āĻāĨ¤ āĻāĻŽāĻŋ āύāĻŋāĻŦāύā§āϧ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏāϤāϰā§āĻāϤāĻžāϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž āĻā§āĻĄāĻŧā§ āĻĻā§āĻŦ:
- V1004 [CWE-476] 'Expr' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1049, 1078. DebugInfoMetadata.cpp 1078
- V1004 [CWE-476] 'PI' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 733, 753. LegacyPassManager.cpp 753
- V1004 [CWE-476] 'StatepointCall' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 4371, 4379āĨ¤ Verifier.cpp 4379
- V1004 [CWE-476] 'RV' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 2263, 2268. TGParser.cpp 2268
- V1004 [CWE-476] 'CalleeFn' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1081, 1096. SimplifyLibCalls.cpp 1096
- V1004 [CWE-476] 'TC' āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ nullptr-āĻāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āϞāĻžāĻāύ āĻā§āĻ āĻāϰā§āύ: 1819, 1824āĨ¤ Driver.cpp 1824
āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ N48-N60: āϏāĻŽāĻžāϞā§āĻāύāĻžāĻŽā§āϞāĻ āύāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ (āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ)
std::unique_ptr<IRMutator> createISelMutator() {
....
std::vector<std::unique_ptr<IRMutationStrategy>> Strategies;
Strategies.emplace_back(
new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));
....
}PVS-āϏā§āĻā§āĻĄāĻŋāĻ āϏāϤāϰā§āĻāϤāĻž: [CWE-460] 'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻā§āĻļāϞ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-isel-fuzzer.cpp 58
āĻāĻāĻāĻŋ āϧāĻžāϰāĻ āĻļā§āώ⧠āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰāĻžāϰ āĻŽāϤ std:: āĻā§āĻā§āĻāϰ > āĻāĻĒāύāĻŋ āĻļā§āϧ⧠āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž xxx.push_back(āύāϤā§āύ āĻāĻā§āϏ), āϝā§āĻšā§āϤ⧠āĻĨā§āĻā§ āĻā§āύ āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āϰā§āĻĒāĻžāύā§āϤāϰ āύā§āĻ X* в std::unique_ptr.
āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŽāĻžāϧāĻžāύ āϞāĻŋāĻāϤ⧠āĻšāϝāĻŧ xxx.emplace_back(āύāϤā§āύ āĻāĻā§āϏ)āϝā§āĻšā§āϤ⧠āĻāĻāĻŋ āϏāĻāĻāϞāύ āĻāϰā§: āĻĒāĻĻā§āϧāϤāĻŋ emplace_back āϏāϰāĻžāϏāϰāĻŋ āϤāĻžāϰ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻ āύ āĻāϰ⧠āĻāĻŦāĻ āϤāĻžāĻ āϏā§āĻĒāώā§āĻ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āύāϝāĻŧ. āĻā§āĻā§āĻāϰ āĻĒā§āϰā§āĻŖ āĻšāϞā§, āĻŽā§āĻŽāϰāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻŽā§āĻŽāϰāĻŋ āϰāĻŋāϞā§āĻā§āĻļāύ āĻ āĻĒāĻžāϰā§āĻļāύ āĻŦā§āϝāϰā§āĻĨ āĻšāϤ⧠āĻĒāĻžāϰā§, āϝāĻžāϰ āĻĢāϞ⧠āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āύāĻŋāĻā§āώāĻŋāĻĒā§āϤ āĻšāϝāĻŧ std::bad_alloc. āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋ āĻšāĻžāϰāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻŦāϏā§āϤā§āĻāĻŋ āĻāĻāύāĻ āĻŽā§āĻā§ āϝāĻžāĻŦā§ āύāĻžāĨ¤
āĻāĻāĻāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āϏāĻŽāĻžāϧāĻžāύ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻ āύāύā§āϝ_āĻĒāĻŋāĻāĻŋāĻāϰāĻā§āĻā§āĻāϰ āĻŽā§āĻŽāϰāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻžāϰ āĻāĻā§ āϝāĻž āĻĒāϝāĻŧā§āύā§āĻāĻžāϰā§āϰ āĻŽāĻžāϞāĻŋāĻ āĻšāĻŦā§:
xxx.push_back(std::unique_ptr<X>(new X))C++14 āĻĨā§āĻā§, āĻāĻĒāύāĻŋ 'std::make_unique' āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
xxx.push_back(std::make_unique<X>())āĻāĻ āϧāϰāύā§āϰ āϤā§āϰā§āĻāĻŋ LLVM-āĻāϰ āĻāύā§āϝ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āύāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āύāĻž āĻāϰāĻž āϝāĻžāϝāĻŧ āϤāĻŦā§ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻāĻŋ āĻā§āĻŦāϞ āĻŦāύā§āϧ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻĻā§āϰā§āĻ āϏāĻā§āĻā§ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻāύā§āϝ , āϝāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŽā§āĻŽāϰāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āĻŦā§āϝāϰā§āĻĨ āĻšāϞ⧠āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āĻŦāĻžāĻā§ āĻŦāĻžāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϏā§āϤāϰāĻžāĻ, āϝāĻĻāĻŋāĻ āĻāĻ āĻā§āĻĄāĻāĻŋ LLVM-āĻāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻšā§āĻŽāĻāĻŋ āϏā§āώā§āĻāĻŋ āĻāϰ⧠āύāĻž, āĻāĻŽāĻŋ āĻāĻ āϤā§āϰā§āĻāĻŋāϰ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāĻž āĻāĻŦāĻ PVS-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻāĻāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻļāĻŋāĻā§āĻāĻŋ āĻāĻāĻŋ āĻĻāϰāĻāĻžāϰ⧠āĻŦāϞ⧠āĻŽāύ⧠āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāĻ āϧāϰāύā§āϰ āĻ āύā§āϝāĻžāύā§āϝ āϏāϤāϰā§āĻāϤāĻž:
- V1023 [CWE-460] āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'Emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'Passes' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. PassManager.h 546
- V1023 [CWE-460] āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ 'āĻāĻāĻāϏ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. āĻāĻĒāύāĻžāĻŽ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ.h 324
- V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻāύā§āĻā§āϰāĻŋ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. DWARFDebugFrame.cpp 519
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'AllEdges' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. CFGMST.h 268
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'VMaps' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. SimpleLoopUnswitch.cpp 2012
- V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āϰā§āĻāϰā§āĻĄ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. FDRLogBuilder.h 30
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'PendingSubmodules' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. ModuleMap.cpp 810
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻ āĻŦāĻā§āĻā§āĻ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. DebugMap.cpp 88
- V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻā§āĻļāϞ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-isel-fuzzer.cpp 60
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 685
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 686
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 688
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 689
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 690
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 691
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 692
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 693
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. llvm-stress.cpp 694
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻ āĻĒāĻžāϰā§āύā§āĻĄ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. GlobalISelEmitter.cpp 1911
- V1023 [CWE-460] 'emplace_back' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'Stash' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. GlobalISelEmitter.cpp 2100
- V1023 [CWE-460] 'āĻāĻŽāĻĒā§āϞā§āϏ_āĻŦā§āϝāĻžāĻ' āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠'āĻŽā§āϝāĻžāĻāĻžāϰā§āϏ' āĻāύā§āĻā§āĻāύāĻžāϰ⧠āĻŽāĻžāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋ āϞāĻŋāĻ āĻāĻāĻŦā§. GlobalISelEmitter.cpp 2702
āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻāĻŽāĻŋ āĻŽā§āĻ 60āĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻāĻžāϰāĻŋ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻŦāύā§āϧ āĻāϰā§āĻāĻŋāĨ¤ āĻĒāĻŋāĻāĻŋāĻāϏ-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻāϞāĻāϞāĻāĻŋāĻāĻŽ-āĻ āĻļāύāĻžāĻā§āϤ āĻāϰ⧠āĻāĻŽāύ āĻ āύā§āϝāĻžāύā§āϝ āϤā§āϰā§āĻāĻŋ āĻāĻā§ āĻāĻŋ? āĻšā§āϝāĻžāĻ āĻāĻŽāĻžāϰ āĻāĻā§. āϝāĻžāĻāĻšā§āĻ, āϝāĻāύ āĻāĻŽāĻŋ āύāĻŋāĻŦāύā§āϧāĻāĻŋāϰ āĻāύā§āϝ āĻā§āĻĄā§āϰ āĻā§āĻāϰā§āĻā§āϞāĻŋ āϞāĻŋāĻāĻāĻŋāϞāĻžāĻŽ, āϤāĻāύ āĻāĻā§āϰ āϏāύā§āϧā§āϝāĻž, āĻŦāĻž āĻāĻŽāύāĻāĻŋ āϰāĻžāϤ āĻāĻŋāϞ āĻāĻŦāĻ āĻāĻŽāĻŋ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ āϝ⧠āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĻāĻŋāύ āĻŦāϞāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤
āĻāĻŽāĻŋ āĻāĻļāĻž āĻāϰāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻĒā§āϝāĻŧā§āĻā§āύ āĻāĻŦāĻ PVS-āϏā§āĻā§āĻĄāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻāĻžāĻāĻŦā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻŦāĻŋāĻļā§āϞā§āώāĻ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŽāĻžāĻāύāϏā§āĻāĻĒāĻžāϰ āĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ .
āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ, āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻāĻāĻžāϞā§āύ āĻā§āĻ, āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ āĻāύāĻĒā§āϰāĻŋāϝāĻŧ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻžāĻšāĻŋāϤ āĻāĻŦāĻ PVS-āϏā§āĻā§āĻĄāĻŋāĻ āĻāĻāĻāĻŋ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻĻā§āĻļā§āϝāĻāϞā§āĻĒ āύāϝāĻŧ.
āĻāĻĒāύāĻžāϰ āĻā§āĻĄā§āϰ āĻā§āĻŖāĻŽāĻžāύ āĻāĻŦāĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāϤāĻž āĻāύā§āύāϤ āĻāϰāĻžāϰ āĻāύā§āϝ āϏā§āĻāĻžāĻā§āϝ!
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻāĻāϰā§āĻāĻŋāĻāĻžāώ⧠āĻĻāϰā§āĻļāĻāĻĻā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻŦā§ āĻ
āύā§āĻā§āϰāĻš āĻāϰ⧠āĻ
āύā§āĻŦāĻžāĻĻ āϞāĻŋāĻā§āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ: āĻāύā§āĻĻā§āϰ⧠āĻāĻžāϰā§āĻĒāĻāĨ¤ .
āĻāϤā§āϏ: www.habr.com
