From 464d52428389f868033739f4404d48f4c9a7eac8 Mon Sep 17 00:00:00 2001
From: Daniel Salzman <daniel.salzman@nic.cz>
Date: Thu, 2 Oct 2014 10:28:12 +0200
Subject: [PATCH] zscanner: fix empty file processing

---
 src/zscanner/scanner.c.g2 | 7 +++++++
 src/zscanner/scanner.c.t0 | 7 +++++++
 src/zscanner/scanner.rl   | 7 +++++++
 3 files changed, 21 insertions(+)

diff --git a/src/zscanner/scanner.c.g2 b/src/zscanner/scanner.c.g2
index 1814ab635..342a717bd 100644
--- a/src/zscanner/scanner.c.g2
+++ b/src/zscanner/scanner.c.g2
@@ -73156,6 +73156,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Check for empty file.
+	if (file_stat.st_size == 0) {
+		close(s->file.descriptor);
+		free(s->file.name);
+		return 0;
+	}
+
 	// Block size adjustment to multiple of page size.
 	default_block_size = (BLOCK_SIZE / page_size) * page_size;
 
diff --git a/src/zscanner/scanner.c.t0 b/src/zscanner/scanner.c.t0
index 1b6e8248b..e793fb833 100644
--- a/src/zscanner/scanner.c.t0
+++ b/src/zscanner/scanner.c.t0
@@ -7477,6 +7477,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Check for empty file.
+	if (file_stat.st_size == 0) {
+		close(s->file.descriptor);
+		free(s->file.name);
+		return 0;
+	}
+
 	// Block size adjustment to multiple of page size.
 	default_block_size = (BLOCK_SIZE / page_size) * page_size;
 
diff --git a/src/zscanner/scanner.rl b/src/zscanner/scanner.rl
index 3a36dd4b3..e53e041c0 100644
--- a/src/zscanner/scanner.rl
+++ b/src/zscanner/scanner.rl
@@ -324,6 +324,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Check for empty file.
+	if (file_stat.st_size == 0) {
+		close(s->file.descriptor);
+		free(s->file.name);
+		return 0;
+	}
+
 	// Block size adjustment to multiple of page size.
 	default_block_size = (BLOCK_SIZE / page_size) * page_size;
 
-- 
GitLab