dmitry-chirkov-dremio opened a new pull request, #49471:
URL: https://github.com/apache/arrow/pull/49471

   ### Rationale for this change
   
   Two Gandiva functions crash when called with extreme integer parameter 
values:
   1. `substring_index(VARCHAR, VARCHAR, INT)` crashes with SIGBUS when count 
is `INT_MIN`
   2. `truncate(BIGINT, INT)` crashes with SIGSEGV when scale is `INT_MAX` or 
`INT_MIN`
   
   ### What changes are included in this PR?
   
   **substring_index fix** (`gdv_string_function_stubs.cc`):
   - Replace `abs(cnt)` with safe `int64_t` computation to avoid undefined 
behavior when `cnt == INT_MIN`
   
   **truncate fix** (`precompiled/extended_math_ops.cc`):
   - Return input unchanged for positive scales (no-op for integers)
   - Return 0 for scales < -38 to prevent out-of-bounds access in 
`GetScaleMultiplier`
   
   ### Are these changes tested?
   
   Yes. Added coverage for `INT_MAX`/`INT_MIN` values in 
`gdv_function_stubs_test.cc` and `extended_math_ops_test.cc`.
   
   ### Are there any user-facing changes?
   
   No.
   
   **This PR contains a "Critical Fix".** These changes fix crashes caused by:
   - `abs(INT_MIN)` triggering undefined behavior (integer overflow) in 
`substring_index`
   - Out-of-bounds array access in `GetScaleMultiplier` when `truncate` 
receives extreme scale values


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to