Module Name: src Committed By: kamil Date: Tue Jun 12 18:12:18 UTC 2018
Modified Files: src/bin/expr: expr.y Log Message: Rework perform_arith_op() in expr(1) to omit Undefined Behavior The current implementation of operations - + * / % could cause Undefined Behavior and in narrow cases (INT64_MIN / -1 and INT64_MIN % -1) SIGFPE and crash duping core. Detected with MKSANITIZER enabled for the Undefined Behavior variation: # eval expr '4611686018427387904 + 4611686018427387904' /public/src.git/bin/expr/expr.y:315:12: runtime error: signed integer overflow: 4611686018427387904 + 4611686018427387904 cannot be represented in type 'long' All bin/t_expr ATF tests pass now in a sanitized userland. Sponsored by <The NetBSD Foundation> To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/bin/expr/expr.y Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.