parsing imap resp-text
Opened this issue · 0 comments
yjm6560 commented
https://www.rfc-editor.org/rfc/rfc3501#section-9
response = *(continue-req / response-data) response-done
response-done = response-tagged / response-fatal
response-tagged = tag SP resp-cond-state CRLF
resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text
; Status condition
resp-text = ["[" resp-text-code "]" SP] text
text = 1*TEXT-CHAR
TEXT-CHAR = <any CHAR except CR and LF>
resp-text
comes after tag
and status in tagged response(response-done
) and it can be all characters except CR and LF.
Lines 247 to 249 in 75db981
however
mailio::imap::parse_response
tries to parse it and can raise exception in following example.
e.g.
mailbox name is mailbox)
and gmail imap server sends it in resp-text
.
$ openssl s_client -connect imap.gmail.com:993 -quiet -crlf
... # login
2 SELECT "mailbox)" # send SELECT command
# receive response
... # receive untagged response
2 OK [READ-WRITE] mailbox) selected. (Success) # tagged response. resp-text is "mailbox) selected. (Success)"
mailio::imap::parse_response
tries to parse [READ-WRITE] mailbox) selected. (Success)
and raise exception since parenthesis_counter
is 0.
Lines 1171 to 1178 in 75db981
this problem can occurs in untagged status response like * BYE test))) data is invalid
.
in additionally, it looks there is no part checking if status is PREAUTH
and BYE
in untagged status response.