diff options
author | Sebastian Berg <sebastian@sipsolutions.net> | 2021-06-09 19:18:07 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-09 19:18:07 -0700 |
commit | 04ab04d93d4d7a4d241fe0ceb725436a8b6c8c2e (patch) | |
tree | 618fb7c7faa157b64c2428afaefa17dca3e6e877 | |
parent | 7a610036d46a173124ece5940e735c0521dee91a (diff) | |
parent | 7a74bece35c9c2381d0dd8c9b777ec5a0feb1728 (diff) | |
download | numpy-04ab04d93d4d7a4d241fe0ceb725436a8b6c8c2e.tar.gz |
Merge pull request #19202 from hawkinsp/datetime
BUG: Fix out-of-bounds access in convert_datetime_divisor_to_multiple
-rw-r--r-- | numpy/core/src/multiarray/datetime.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/numpy/core/src/multiarray/datetime.c b/numpy/core/src/multiarray/datetime.c index 48dc15340..b9d81e836 100644 --- a/numpy/core/src/multiarray/datetime.c +++ b/numpy/core/src/multiarray/datetime.c @@ -950,10 +950,6 @@ convert_datetime_divisor_to_multiple(PyArray_DatetimeMetaData *meta, return -1; } - ind = ((int)meta->base - (int)NPY_FR_Y)*2; - totry = _multiples_table[ind]; - baseunit = _multiples_table[ind + 1]; - num = 3; if (meta->base == NPY_FR_W) { num = 4; @@ -962,6 +958,7 @@ convert_datetime_divisor_to_multiple(PyArray_DatetimeMetaData *meta, num = 2; } if (meta->base >= NPY_FR_s) { + /* _multiplies_table only has entries up to NPY_FR_s */ ind = ((int)NPY_FR_s - (int)NPY_FR_Y)*2; totry = _multiples_table[ind]; baseunit = _multiples_table[ind + 1]; @@ -974,6 +971,11 @@ convert_datetime_divisor_to_multiple(PyArray_DatetimeMetaData *meta, num = 0; } } + else { + ind = ((int)meta->base - (int)NPY_FR_Y)*2; + totry = _multiples_table[ind]; + baseunit = _multiples_table[ind + 1]; + } for (i = 0; i < num; i++) { q = totry[i] / den; |