Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion smtp/smtp.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@
#define HOSTNAME
#endif

//default to 64k limit for incoming mail. Override with `-DEMAIL_SIZE_LIMIT=whatever` if desired
#ifndef EMAIL_SIZE_LIMIT
#define EMAIL_SIZE_LIMIT 65536
#endif

#define UPPERCASE_LETTERS(MACRO) \
MACRO('A') \
MACRO('B') \
Expand Down Expand Up @@ -686,7 +691,7 @@ static void handle_data(enum state *state)
#define ERROR_NES(...) { warnx(__VA_ARGS__); error = NOT_ENOUGH_SPACE; last_state = dstate = BODY; break; }
#define ERROR_USI(...) { warnx(__VA_ARGS__); error = USER_SYNTAX_ISSUE; last_state = dstate = BODY; break; }
#define ERROR_ISE(...) { warnx(__VA_ARGS__); error = INTERNAL_SERVER_ERROR; last_state = dstate = BODY; break; }
#define CHECK_WRITE_FAIL(VARNAME) { if(0 > VARNAME) ERROR_NES("not enough space %d", __LINE__) else curr_size += (off_t)VARNAME; }
#define CHECK_WRITE_FAIL(VARNAME) { if(curr_size > EMAIL_SIZE_LIMIT || 0 > VARNAME) ERROR_NES("not enough space %d", __LINE__) else curr_size += (off_t)VARNAME; }
for(enum data_state dstate = HEADERS, last_state = HEADERS; dstate != FINISHED;)
{
if(dstate == BODY && last_state == HEADERS)
Expand Down