diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp
index a41658f88301bacc2dc8fc4ba37e0fcfbb2c863b..72de5d29565e282eb9dde3f944bbb91f4cd43842 100644
--- a/src/sbbs3/exec.cpp
+++ b/src/sbbs3/exec.cpp
@@ -790,7 +790,12 @@ long sbbs_t::exec_bin(const char *cmdline, csi_t *csi, const char* startup_dir)
 
 	memcpy(&bin,csi,sizeof(csi_t));
 	clearvars(&bin);
-	bin.length=(uint32_t)filelength(file);
+	bin.length = filelength(file);
+	if(bin.length < 1) {
+		close(file);
+		errormsg(WHERE, ERR_LEN, str, bin.length);
+		return -1;
+	}
 	if((bin.cs=(uchar *)malloc(bin.length))==NULL) {
 		close(file);
 		errormsg(WHERE,ERR_ALLOC,str,bin.length);