diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 94aa8d3052c58e1a36a6c5f2a9b1946ce4956920..00e03cb7fac7a70ad91e4236c17cdf18470d7486 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -688,8 +688,10 @@ int DLLCALL putnodedat(scfg_t* cfg, uint number, node_t* node, int file)
 	int		wrerr;
 	int		attempts;
 
-	if(!number || number>cfg->sys_nodes) 
+	if(!number || number>cfg->sys_nodes || file<0) {
+		close(file);
 		return(-1);
+	}
 
 	number--;	/* make zero based */
 	for(attempts=0;attempts<10;attempts++) {