UTI_AddDoubleToTimeval(sample_time, correction, &cooked_time);
dispersion += instance->precision;
- if (!valid_sample_time(instance, sample_time))
+ /* Make sure the timestamp and offset provided by the driver are sane */
+ if (!UTI_IsTimeOffsetSane(sample_time, offset) ||
+ !valid_sample_time(instance, sample_time))
return 0;
filter_add_sample(&instance->filter, &cooked_time, offset - correction + instance->offset, dispersion);
UTI_AddDoubleToTimeval(pulse_time, correction, &cooked_time);
dispersion += instance->precision;
- if (!valid_sample_time(instance, pulse_time))
+ if (!UTI_IsTimeOffsetSane(pulse_time, 0.0) ||
+ !valid_sample_time(instance, pulse_time))
return 0;
rate = instance->pps_rate;