In VECTOR_SLOT(V, E), we add the lower bound check of E. E cannot be less than zero. Signed-off-by: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> --- libmultipath/vector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmultipath/vector.h b/libmultipath/vector.h index e16ec461..cdb94b24 100644 --- a/libmultipath/vector.h +++ b/libmultipath/vector.h @@ -32,7 +32,7 @@ typedef struct _vector *vector; #define VECTOR_DEFAULT_SIZE 1 #define VECTOR_SIZE(V) ((V) ? ((V)->allocated) / VECTOR_DEFAULT_SIZE : 0) -#define VECTOR_SLOT(V,E) (((V) && (E) < VECTOR_SIZE(V)) ? (V)->slot[(E)] : NULL) +#define VECTOR_SLOT(V,E) (((V) && (E) < VECTOR_SIZE(V) && (E) >= 0) ? (V)->slot[(E)] : NULL) #define VECTOR_LAST_SLOT(V) (((V) && VECTOR_SIZE(V) > 0) ? (V)->slot[(VECTOR_SIZE(V) - 1)] : NULL) #define vector_foreach_slot(v,p,i) \ -- 2.24.0.windows.2 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel