はじめに 整数型の取り扱い (表現可能な値の範囲を超える "整数オーバーフロー" を防ぐなど) は、セキュリティ上の問題を避けるために、そうでなくとも予期しないバグを避けるために (頻繁に!) 注意しなければならないことだと言えるでしょう。 整数オーバーフローは、特に C/C++ においては深刻な脆弱性の原因になりがちです。昨年界隈を騒がせた Android の Stagefright としてくくられている複数の脆弱性のうち大部分は、この整数オーバーフローが原因となっています。 ただ、C++ における整数型は、実に奇妙です。その奇妙さの結果、C++ において整数オーバーフローを防ぐことは非常に難しいことが……あまり知られていません。というわけで、数回に分けて C++ における整数型 (特に符号付き整数型) の仕様とその奇妙なところ、何故整数オーバーフローチェックが難しいのか、それでもどうや
![C++ における整数型の怪と "移植性のある" オーバーフローチェッカー (第1回 : 整数型の怪と対策の不足) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/25b70f6781abcad3f39565505bfbc72a7d2cceb8/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9QyUyQiUyQiUyMCVFMyU4MSVBQiVFMyU4MSU4QSVFMyU4MSU5MSVFMyU4MiU4QiVFNiU5NSVCNCVFNiU5NSVCMCVFNSU5RSU4QiVFMyU4MSVBRSVFNiU4MCVBQSVFMyU4MSVBOCUyMCUyMiVFNyVBNyVCQiVFNiVBNCU4RCVFNiU4MCVBNyVFMyU4MSVBRSVFMyU4MSU4MiVFMyU4MiU4QiUyMiUyMCVFMyU4MiVBQSVFMyU4MyVCQyVFMyU4MyU5MCVFMyU4MyVCQyVFMyU4MyU5NSVFMyU4MyVBRCVFMyU4MyVCQyVFMyU4MyU4MSVFMyU4MiVBNyVFMyU4MyU4MyVFMyU4MiVBQiVFMyU4MyVCQyUyMCUyOCVFNyVBQyVBQzElRTUlOUIlOUUlMjAlM0ElMjAlRTYlOTUlQjQlRTYlOTUlQjAlRTUlOUUlOEIlRTMlODElQUUlRTYlODAlQUElRTMlODElQTglRTUlQUYlQkUlRTclQUQlOTYlRTMlODElQUUlRTQlQjglOEQlRTglQjYlQjMlMjkmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTAwYmJlYTMxNWQxZjg2ZTdhY2Q5NTYzMTA2YTZlOGI3%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBhNGxnJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01ZjFlZDU3MTBhZDc1MzlmN2QxYzI2MjAzM2UzZjllNg%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D1a28dad1284316eea9b61545ef66d2e0)