The loop in H5O__dtype_decode_helper() that computes nelem by multiplying array dimension sizes has no per-step overflow check.
This produces incorrect element counts that propagate through type conversion, vlen iteration, and size calculations.
Add a per-step overflow guard inside the multiplication loop so the wrap is caught before it happens.