diff --git a/src/sbbs3/bat_xfer.cpp b/src/sbbs3/bat_xfer.cpp
index 0b3080e2098a8f00d3721cca067fff247486757d..30a793f8036e9b85be6063c5f2b4bb9c53713faa 100644
--- a/src/sbbs3/bat_xfer.cpp
+++ b/src/sbbs3/bat_xfer.cpp
@@ -617,7 +617,7 @@ void sbbs_t::batch_upload()
 	if(cfg.upload_dir==INVALID_DIR)
 		return;
 	dir=opendir(cfg.temp_dir);
-	while((dirent=readdir(dir))!=NULL) {
+	while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
 		sprintf(str1,"%s%s",cfg.temp_dir,dirent->d_name);
 		if(isdir(str1))
 			continue;
diff --git a/src/sbbs3/pack_qwk.cpp b/src/sbbs3/pack_qwk.cpp
index 0328981c4bc5b33d0cd1c62d51d6bdf2ffd7983c..10dab23c88d28d7194c9f5ed32ae1f6e42494116 100644
--- a/src/sbbs3/pack_qwk.cpp
+++ b/src/sbbs3/pack_qwk.cpp
@@ -477,7 +477,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 	if(/*!prepack && */ useron.rest&FLAG('Q')) { /* If QWK Net node, check for files */
 		sprintf(str,"%sqnet/%s.out/",cfg.data_dir,useron.alias);
 		dir=opendir(str);
-		while((dirent=readdir(dir))!=NULL) {    /* Move files into temp dir */
+		while(dir!=NULL && (dirent=readdir(dir))!=NULL) {    /* Move files into temp dir */
 			sprintf(str,"%sqnet/%s.out/%s",cfg.data_dir,useron.alias,dirent->d_name);
 			if(isdir(str))
 				continue;
@@ -606,7 +606,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 	if(useron.rest&FLAG('Q')) {
 		sprintf(str,"%s.qwk",cfg.sys_id);
 		dir=opendir(cfg.temp_dir);
-		while((dirent=readdir(dir))!=NULL) {
+		while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
 			if(!stricmp(str,dirent->d_name))	/* QWK packet */
 				continue;
 			sprintf(tmp,"%s%s",cfg.temp_dir,dirent->d_name);
diff --git a/src/sbbs3/pack_rep.cpp b/src/sbbs3/pack_rep.cpp
index 05bf3234515a6de60e3b385b9df67441799ea879..7f7cf20f747b22ebd1017d0d4bd688abad2e69f6 100644
--- a/src/sbbs3/pack_rep.cpp
+++ b/src/sbbs3/pack_rep.cpp
@@ -201,7 +201,7 @@ bool sbbs_t::pack_rep(uint hubnum)
 	sprintf(str,"%sqnet/%s.out",cfg.data_dir,cfg.qhub[hubnum]->id);
 	strlwr(str);
 	dir=opendir(str);
-	while((dirent=readdir(dir))!=NULL) {
+	while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
 		sprintf(str,"%sqnet/%s.out/%s",cfg.data_dir,cfg.qhub[hubnum]->id,dirent->d_name);
 		strlwr(str);
 		if(isdir(str))
diff --git a/src/sbbs3/tmp_xfer.cpp b/src/sbbs3/tmp_xfer.cpp
index 269afd1ca2af35091622e0966069deede707848e..b523faacff2e079947f521fe6c4f2dc7707b32eb 100644
--- a/src/sbbs3/tmp_xfer.cpp
+++ b/src/sbbs3/tmp_xfer.cpp
@@ -306,7 +306,7 @@ void sbbs_t::extract(uint dirnum)
 		if(fexist(str)) {
 			bputs(text[RemovingTempFiles]);
 			dir=opendir(cfg.temp_dir);
-			while((dirent=readdir(dir))!=NULL) {
+			while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
 				sprintf(str,"%s%s",cfg.temp_dir,dirent->d_name);
         		if(!isdir(str))
 					remove(str);
diff --git a/src/sbbs3/un_qwk.cpp b/src/sbbs3/un_qwk.cpp
index 56bdaedc01681d2fa24caf2100b066acc8703d6e..faf0adaa06cc46246d4515fff2d8532dcc16f9f1 100644
--- a/src/sbbs3/un_qwk.cpp
+++ b/src/sbbs3/un_qwk.cpp
@@ -256,7 +256,7 @@ bool sbbs_t::unpack_qwk(char *packet,uint hubnum)
 	remove(str);
 
 	dir=opendir(cfg.temp_dir);
-	while((dirent=readdir(dir))!=NULL) {
+	while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
 		// Create directory if necessary
 		sprintf(str,"%sqnet/%s.in",cfg.data_dir,cfg.qhub[hubnum]->id);
 		_mkdir(str);
diff --git a/src/sbbs3/un_rep.cpp b/src/sbbs3/un_rep.cpp
index 399f6dc1d00f8fbd02a5ffc9ec53237937ea4540..52e60e7f8e9419818ea83b2928981ebabe432c13 100644
--- a/src/sbbs3/un_rep.cpp
+++ b/src/sbbs3/un_rep.cpp
@@ -415,7 +415,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 		remove(str);
 
 		dir=opendir(cfg.temp_dir);
-		while((dirent=readdir(dir))!=NULL) {				/* Extra files */
+		while(dir!=NULL && (dirent=readdir(dir))!=NULL) {				/* Extra files */
 			// Create directory if necessary
 			sprintf(str,"%sqnet/%s.in",cfg.data_dir,useron.alias);
 			_mkdir(str); 
diff --git a/src/sbbs3/upload.cpp b/src/sbbs3/upload.cpp
index a42c29269c1f10468dfa211e546b48b7f2de7cef..f6bc1d2b0f094a701b5e4c4e1ae90b8605fb928c 100644
--- a/src/sbbs3/upload.cpp
+++ b/src/sbbs3/upload.cpp
@@ -532,7 +532,7 @@ bool sbbs_t::bulkupload(uint dirnum)
 	action=NODE_ULNG;
 	SYNC;
 	dir=opendir(path);
-	while((dirent=readdir(dir))!=NULL && !msgabort()) {
+	while(dir!=NULL && (dirent=readdir(dir))!=NULL && !msgabort()) {
 		if(getfiles(&cfg,dirnum)>=cfg.dir[dirnum]->maxfiles) {
 			bputs(text[DirFull]);
 			break;