file: define own variable instead of PATH_MAX

to be used for maximum size of file names,
and not depend on the OS
pull/6779/head
Philippe Antoine 4 years ago committed by Victor Julien
parent c56b1c99d5
commit 86ea7f2474

@ -638,11 +638,11 @@ static AppLayerResult FTPParseRequest(Flow *f, void *ftp_state, AppLayerParserSt
data->DFree = FtpTransferCmdFree;
/*
* Min size has been checked in FTPParseRequestCommand
* PATH_MAX includes the null
* SC_FILENAME_MAX includes the null
*/
uint32_t file_name_len = MIN(PATH_MAX - 1, state->current_line_len - 5);
#if PATH_MAX > UINT16_MAX
#error PATH_MAX is greater than UINT16_MAX
uint32_t file_name_len = MIN(SC_FILENAME_MAX - 1, state->current_line_len - 5);
#if SC_FILENAME_MAX > UINT16_MAX
#error SC_FILENAME_MAX is greater than UINT16_MAX
#endif
data->file_name = FTPCalloc(file_name_len + 1, sizeof(char));
if (data->file_name == NULL) {

@ -1630,9 +1630,9 @@ static int HtpRequestBodyHandlePOSTorPUT(HtpState *hstate, HtpTxUserData *htud,
}
if (filename != NULL) {
if (filename_len > PATH_MAX) {
if (filename_len > SC_FILENAME_MAX) {
// explicitly truncate the file name if too long
filename_len = PATH_MAX;
filename_len = SC_FILENAME_MAX;
HTPSetEvent(hstate, htud, STREAM_TOSERVER, HTTP_DECODER_EVENT_FILE_NAME_TOO_LONG);
}
result = HTPFileOpen(hstate, htud, filename, (uint16_t)filename_len, data, data_len,
@ -1708,9 +1708,9 @@ static int HtpResponseBodyHandle(HtpState *hstate, HtpTxUserData *htud,
if (filename != NULL) {
// set range if present
htp_header_t *h_content_range = htp_table_get_c(tx->response_headers, "content-range");
if (filename_len > PATH_MAX) {
if (filename_len > SC_FILENAME_MAX) {
// explicitly truncate the file name if too long
filename_len = PATH_MAX;
filename_len = SC_FILENAME_MAX;
HTPSetEvent(hstate, htud, STREAM_TOSERVER, HTTP_DECODER_EVENT_FILE_NAME_TOO_LONG);
}
if (h_content_range != NULL) {

@ -458,8 +458,8 @@ int SMTPProcessDataChunk(const uint8_t *chunk, uint32_t len,
StreamTcpReassemblySetMinInspectDepth(flow->protoctx, STREAM_TOSERVER, depth);
uint16_t flen = (uint16_t)entity->filename_len;
if (entity->filename_len > PATH_MAX) {
flen = PATH_MAX;
if (entity->filename_len > SC_FILENAME_MAX) {
flen = SC_FILENAME_MAX;
SMTPSetEvent(smtp_state, SMTP_DECODER_EVENT_MIME_LONG_FILENAME);
}
if (FileOpenFileWithId(files, &smtp_config.sbcfg, smtp_state->file_track_id++,

@ -58,6 +58,9 @@ typedef struct SCMd5 SCMd5;
#define FILE_USE_DETECT BIT_U16(13) /**< use content_inspected tracker */
#define FILE_HAS_GAPS BIT_U16(15)
// to be used instead of PATH_MAX which depends on the OS
#define SC_FILENAME_MAX 4096
typedef enum FileState_ {
FILE_STATE_NONE = 0, /**< no state */
FILE_STATE_OPENED, /**< flow file is opened */

Loading…
Cancel
Save