Skip to content

LimePlugin: unvalidated channel count, ignored status, leaked calibration stream #399

Description

@dmitrymmm
  1. GatherConfigSettings reads max_channels_to_use straight from the user's config with no range validation, and TransferSettingsToDevicesConfig then loops for (int ch = 0; ch < node.configInputs.maxChannelsToUse; ++ch) writing through references into node.config.channel[ch] - a fixed 16-entry array. A larger value writes out of bounds.

  2. LimePlugin_Init checks the status of GatherPortSettings, ConnectInitializeDevices and LoadDevicesConfigurationFile, but discards the one from TransferSettingsToDevicesConfig, which returns InvalidValue when an antenna path name is not found - after it has already written trx.path = 0 and trx.enabled = false through its references. The plugin reports success with a partially applied RF configuration.

  3. port.calibrationStream, created in ConfigureStreaming, is never stopped or reset anywhere. LimePlugin_Destroy then calls DeviceRegistry::freeDevice on devices whose FPGA and LMS7002M objects the still-alive TRXLooper inside that stream holds as raw pointers.

Activity

  1. dmitrymmm commented on Aug 3, 2026

    @dmitrymmm
    ContributorAuthor

    Fix submitted in #376

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions