Sang Woo Kim bd20c712f3 udpiiu: reject a non-finite or non-positive EPICS_CA_MAX_SEARCH_PERIOD
epicsScanDouble accepts "inf" and "nan", so envGetDoubleConfigParam
returns success for them and the parsed value flows into getMaxPeriod's
only range gate, maxPeriod < maxSearchPeriodLowerLimit. That comparison
is false for both inf and NaN, so a non-finite period reaches
getNTimers(), whose static_cast<unsigned> of 1 + log(maxPeriod/...)/log2
is an undefined float->unsigned conversion: inf aborts the client in
malloc via a garbage nTimers allocation, and NaN drives the search-timer
wheel off a NaN period where every deadline comparison is false.

Gate the parsed value on finite() (from epicsMath.h) and positivity
alongside the parse status, and fall back to the default period. A
non-positive period is not a "low" period to be clamped up to the 60 s
lower limit; it takes the same invalid-input path as inf/NaN.

getMaxPeriod() is getNTimers()'s only caller, so this makes the
conversion finite and positive by construction.
2026-10-14 11:20:25 +02:00
2025-11-20 14:50:16 -08:00
2024-06-27 22:20:19 -05:00
2026-10-14 10:57:56 +02:00
2026-02-18 10:34:08 -06:00
2024-06-27 22:20:19 -05:00
2026-01-06 14:57:16 +01:00
2023-12-08 15:32:20 +01:00
2025-10-08 09:37:41 -05:00
2026-02-27 13:19:16 +00:00

EPICS Base

EPICS (Experimental Physics and Industrial Control System) is a set of software tools and applications which provide a software infrastructure for use in building distributed control systems to operate devices such as Particle Accelerators, Large Experiments and major Telescopes. EPICS Base is the central core of the control system toolkit. More details can be found at the About page of the official website

Documentation

Community Communication

Quick Install

Download a release from the Downloads page and unpack it. Inside the unpacked folder run:

make

For more information on how to install on your system see the Installation page of the documentation.

Quick run a softIOC

After building, you can run an example soft-IOC (Input/Output Controller) which runs a Channel Access server.

./bin/*/softIoc -x first

Run the dbl command to list the records it provides:

epics> dbl
first:BaseVersion
first:exit
epics>

Contributing

See CONTRIBUTING.md.

License

EPICS Base is distributed subject to a Software License Agreement found in the file LICENSE that is included with this distribution.

S
Description
See the PSI-* branches for releases including our PSI setup and modifications. The branches without PSI prefix are original upstream. https://github.com/epics-base/epics-base.git
Readme
112 MiB
0 Stars 0 Watchers 0 Forks
Languages
C 65.8%
C++ 21.2%
Perl 5.8%
HTML 3.4%
Makefile 1.6%
Other 2.1%