diff --git a/src/managesieve/cmd-putscript.c b/src/managesieve/cmd-putscript.c
index 8eb25f306612efabd41efad1a20d9821a07eab03..1b2998ec6f580319b43f74c87c9b35d68e3e3b1e 100644
--- a/src/managesieve/cmd-putscript.c
+++ b/src/managesieve/cmd-putscript.c
@@ -311,7 +311,6 @@ static bool cmd_putscript_continue_parsing(struct client_command_context *cmd)
 				return cmd_putscript_cancel(ctx, TRUE);
 		}
 		
-		ctx->max_script_size = ctx->script_size;
 	} else {
 		ctx->max_script_size = managesieve_quota_max_script_size(client);		
 	}
@@ -343,7 +342,8 @@ static bool cmd_putscript_continue_script(struct client_command_context *cmd)
 
 	if (ctx->save_ctx != NULL) {
 		while (ctx->script_size == 0 || ctx->input->v_offset != ctx->script_size) {
-			if ( ctx->input->v_offset > ctx->max_script_size ) {
+			if ( ctx->max_script_size > 0 &&
+				ctx->input->v_offset > ctx->max_script_size ) {
 				(void)managesieve_quota_check_validsize(client, ctx->input->v_offset);
 				cmd_putscript_finish(ctx);
 				return TRUE;