# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Fuzzer dictionary targetting FTP responses.

# Each response is on its own line, so CRLF is generally useful.
"\x0D\x0A"

# End of string marker, used by FuzzedDataProvider.
"\\ "

# Suffixes for file types.
";type=a"
";type=i"
";type=d"

# Dashes indicate multi-line responses.
"-"

# Generic success.
"200 OK\x0D\x0A\\ "

# Greeting
"230 Welcome\x0D\x0A\\ "

# SIZE response
"213 18\x0D\x0A\\ "

# All important PASV/EPSV responses
"227 Entering PASV mode (1,1,1,1,50,50)\x0D\x0A\\ "
"227 Entering Passive Mode 127,0,0,1,123,456\x0D\x0A\\ "
"227 Entering Extended Passive Mode (|||31744|)\x0D\x0A\\ "
"227 Entering The Twilight Zone\x0D\x0A\\ "

# RETR/LIST response.
"125-Data connection already open.\x0D\x0A125  Transfer starting.\x0D\x0A226 Transfer complete.\x0D\x0A\\ "
"125-Data connection already open.\x0D\x0A\\ "
"125 Transfer starting.\x0D\x0A\\ "
"226 Transfer complete.\x0D\x0A\\ "

# Some specific success messages, taken from unittests.
"215 UNIX\x0D\x0A\\ "
"215 VMS\x0D\x0A\\ "
"220 host TestFTPd\x0D\x0A\\ "
"221 Goodbye!\x0D\x0A\\ "
"257 \"/\" is your current location\x0D\x0A\\ "
"257 \"ANONYMOUS_ROOT:[000000]\"\x0D\x0A\\ "

# Error messages, taken from unittests.
"331 Password needed\x0D\x0A\\ "
"331 User okay, send password\x0D\x0A\\ "
"451 not a directory\x0D\x0A\\ "
"500 EPSV command unknown\x0D\x0A\\ "
"503 Bad sequence of commands\x0D\x0A\\ "
"530 Login authentication failed\x0D\x0A\\ "
"550 I can only retrieve regular files\x0D\x0A\\ "
"550 Not a directory\x0D\x0A\\ "
"599 I'm sorry, Dave, I'm afraid I can't do that.\x0D\x0A\\ "
