Skip to content

Commit 78684d9

Browse files
committed
fix: correct memory bounds check for negative strides
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 4e0b727 commit 78684d9

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

  • lib/node_modules/@stdlib/lapack/base/dlaswp/src

lib/node_modules/@stdlib/lapack/base/dlaswp/src/addon.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,14 @@ static napi_value addon_method( napi_env env, napi_callback_info info ) {
112112
STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY2D( env, A, mrows, N, strideA1, strideA2, argv, 1 );
113113

114114
// For IPIV, compute the total number of elements needed:
115-
CBLAS_INT absStride;
116-
if ( strideIPIV > 0 ) {
117-
absStride = strideIPIV;
115+
CBLAS_INT nipiv;
116+
if ( nrows <= 0 ) {
117+
nipiv = 0;
118+
} else if ( strideIPIV < 0 ) {
119+
nipiv = offsetIPIV + 1;
118120
} else {
119-
absStride = -strideIPIV;
121+
nipiv = offsetIPIV + ( ( nrows - 1 ) * strideIPIV ) + 1;
120122
}
121-
CBLAS_INT nipiv = offsetIPIV + ( ( nrows - 1 ) * absStride ) + 1;
122123
STDLIB_NAPI_ARGV_STRIDED_INT32ARRAY( env, IPIV, nipiv, 1, argv, 8 );
123124

124125
API_SUFFIX(c_dlaswp_ndarray)( N, A, strideA1, strideA2, offsetA, k1, k2, inck, IPIV, strideIPIV, offsetIPIV );

0 commit comments

Comments
 (0)