diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 4cd3e95236ae9753f1757b1eb67edbaa52730378..d9dba8d46a8decf80a92531cdb451c5e9b74a293 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -1457,7 +1457,7 @@ char* readsmsg(scfg_t* cfg, int usernumber)
 	if((file=nopen(str,O_RDWR))==-1)
 		return(NULL);
 	length=(long)filelength(file);
-	if((buf=(char *)malloc(length+1))==NULL) {
+	if(length < 0 || (buf=(char *)malloc(length+1))==NULL) {
 		close(file);
 		return(NULL);
 	}