VYPR
High severityNVD Advisory· Published Feb 4, 2022· Updated Apr 22, 2025

Integer overflow in TFLite array creation

CVE-2022-23558

Description

Tensorflow is an Open Source Machine Learning Framework. An attacker can craft a TFLite model that would cause an integer overflow in TfLiteIntArrayCreate. The TfLiteIntArrayGetSizeInBytes returns an int instead of a size_t. An attacker can control model inputs such that computed_size overflows the size of int` datatype. The fix will be included in TensorFlow 2.8.0. We will also cherrypick this commit on TensorFlow 2.7.1, TensorFlow 2.6.3, and TensorFlow 2.5.3, as these are also affected and still in supported range.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
tensorflowPyPI
< 2.5.32.5.3
tensorflowPyPI
>= 2.6.0, < 2.6.32.6.3
tensorflowPyPI
>= 2.7.0, < 2.7.12.7.1
tensorflow-cpuPyPI
< 2.5.32.5.3
tensorflow-cpuPyPI
>= 2.6.0, < 2.6.32.6.3
tensorflow-cpuPyPI
>= 2.7.0, < 2.7.12.7.1
tensorflow-gpuPyPI
< 2.5.32.5.3
tensorflow-gpuPyPI
>= 2.6.0, < 2.6.32.6.3
tensorflow-gpuPyPI
>= 2.7.0, < 2.7.12.7.1

Affected products

1

Patches

1
a1e1511dde36

[lite] Update TfLiteIntArrayCreate to return size_t

https://github.com/tensorflow/tensorflowKarim NosirDec 15, 2021via ghsa
2 files changed · +4 4
  • tensorflow/lite/c/common.c+3 3 modified
    @@ -21,10 +21,10 @@ limitations under the License.
     #include <string.h>
     #endif  // TF_LITE_STATIC_MEMORY
     
    -int TfLiteIntArrayGetSizeInBytes(int size) {
    +size_t TfLiteIntArrayGetSizeInBytes(int size) {
       static TfLiteIntArray dummy;
     
    -  int computed_size = sizeof(dummy) + sizeof(dummy.data[0]) * size;
    +  size_t computed_size = sizeof(dummy) + sizeof(dummy.data[0]) * size;
     #if defined(_MSC_VER)
       // Context for why this is needed is in http://b/189926408#comment21
       computed_size -= sizeof(dummy.data[0]);
    @@ -51,7 +51,7 @@ int TfLiteIntArrayEqualsArray(const TfLiteIntArray* a, int b_size,
     #ifndef TF_LITE_STATIC_MEMORY
     
     TfLiteIntArray* TfLiteIntArrayCreate(int size) {
    -  int alloc_size = TfLiteIntArrayGetSizeInBytes(size);
    +  size_t alloc_size = TfLiteIntArrayGetSizeInBytes(size);
       if (alloc_size <= 0) return NULL;
       TfLiteIntArray* ret = (TfLiteIntArray*)malloc(alloc_size);
       if (!ret) return ret;
    
  • tensorflow/lite/c/common.h+1 1 modified
    @@ -98,7 +98,7 @@ typedef struct TfLiteIntArray {
     
     // Given the size (number of elements) in a TfLiteIntArray, calculate its size
     // in bytes.
    -int TfLiteIntArrayGetSizeInBytes(int size);
    +size_t TfLiteIntArrayGetSizeInBytes(int size);
     
     #ifndef TF_LITE_STATIC_MEMORY
     // Create a array of a given `size` (uninitialized entries).
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

8

News mentions

0

No linked articles in our index yet.