From b42f9c4b3b7f5c79da791f52c9718a716e8feeff Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 13 Nov 2001 15:01:11 +0000
Subject: [PATCH] GLIBC's readdir() apparently doesn't handle NULL parameters
 very well. :-)

---
 src/sbbs3/bat_xfer.cpp | 2 +-
 src/sbbs3/pack_qwk.cpp | 4 ++--
 src/sbbs3/pack_rep.cpp | 2 +-
 src/sbbs3/tmp_xfer.cpp | 2 +-
 src/sbbs3/un_qwk.cpp   | 2 +-
 src/sbbs3/un_rep.cpp   | 2 +-
 src/sbbs3/upload.cpp   | 2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/sbbs3/bat_xfer.cpp b/src/sbbs3/bat_xfer.cpp
index 0b3080e209..30a793f803 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 0328981c4b..10dab23c88 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 05bf323451..7f7cf20f74 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 269afd1ca2..b523faacff 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 56bdaedc01..faf0adaa06 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 399f6dc1d0..52e60e7f8e 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 a42c29269c..f6bc1d2b0f 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; 
-- 
GitLab