1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2025-03-13 20:30:03 +00:00

Merge pull request #1335 from AhmedGrati/feat-add-feature-file-size-limit

feat: add feature file size limit
This commit is contained in:
Kubernetes Prow Robot 2023-09-06 03:50:51 -07:00 committed by GitHub
commit 51c79fea9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 220 additions and 0 deletions

View file

@ -315,6 +315,9 @@ The label value defaults to `true`, if not specified.
Label namespace may be specified with `<namespace>/<name>[=<value>]`.
> **NOTE:** The feature file size limit it 64kB. The feature file will be
> ignored if the size limit is exceeded.
Comment lines (starting with `#`) are ignored.
Adding following line anywhere to feature file defines date when

View file

@ -45,6 +45,9 @@ const ExpiryTimeKey = "expiry-time"
// DirectivePrefix defines the prefix of directives that should be parsed
const DirectivePrefix = "# +"
// MaxFeatureFileSize defines the maximum size of a feature file size
const MaxFeatureFileSize = 65536
// Config
var (
featureFilesDir = "/etc/kubernetes/node-feature-discovery/features.d/"
@ -321,6 +324,23 @@ func getFeaturesFromFiles() (map[string]string, error) {
for _, file := range files {
fileName := file.Name()
fileInfo, err := file.Info()
if err != nil {
klog.ErrorS(err, "failed to get file info", "fileName", fileName)
continue
}
fileSize := fileInfo.Size()
if fileSize > MaxFeatureFileSize {
klog.ErrorS(
fmt.Errorf("file size limit exceeded: %d bytes > %d bytes", fileSize, MaxFeatureFileSize),
"skipping too big feature file",
"fileName", fileName, "fileSize", fileSize,
)
continue
}
lines, err := getFileContent(fileName)
if err != nil {
klog.ErrorS(err, "failed to read file", "fileName", fileName)

File diff suppressed because one or more lines are too long