duesee / duesee/imap-codec

question: Validation of list in ID command

Open
#400 0 comments 0 reactions 0 assignees View on GitHub
misuse question
Dominant language
Rust
Stars
52
Forks
25
Avg merge
21h 53m
Merged PRs (30d)
2

Description

RFC 2971 tells us that ...

* "Strings are not case-sensitive."
* "Implementations MUST NOT send the same field name more than once."

... and that ...

* "Field strings MUST NOT be longer than 30 octets."
* "Value strings MUST NOT be longer than 1024 octets."
* "Implementations MUST NOT send more than 30 field-value pairs."

I'm not sure what to do with this information, really. Sure, we *could* enforce all of this. But... does that mean we reject longer, dulicate, or too much fields?

I'm leaning towards not doing anything of this until there is a good reason. Resource exhaustion probably needs to be handled more generically, anyway?

If we want to do this, we probably should use a wrapper struct that holds a hash-map.

# Dovecot (out of curiosity)

```imap
A ID ("012345678901234567890123456789" "")
* ID ("name" "Dovecot")
A OK ID completed.
A ID ("012345678901234567890123456789X" "")
A BAD Invalid ID parameters

A ID ("name" "A" "name2" "B")
* ID ("name" "Dovecot")
A OK ID completed.
A ID ("name" "A" "name" "B")
* ID ("name" "Dovecot")
A OK ID completed.
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.