diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c
index 4ea2f779d4e8ff617677973a409c63f5cec026fa..c12dae572e05a877d894b263568b17e6b1f40caf 100644
--- a/src/sbbs3/filedat.c
+++ b/src/sbbs3/filedat.c
@@ -152,11 +152,13 @@ str_list_t loadfilenames(smb_t* smb, const char* filespec, time_t t, enum file_s
 			return NULL;
 	}
 
+	if(fseek(smb->sid_fp, start * sizeof(fileidxrec_t), SEEK_SET) != 0)
+		return NULL;
+
 	char** file_list = calloc(smb->status.total_files + 1, sizeof(char*));
 	if(file_list == NULL)
 		return NULL;
 
-	fseek(smb->sid_fp, start * sizeof(fileidxrec_t), SEEK_SET);
 	size_t offset = start;
 	while(!feof(smb->sid_fp) && offset < smb->status.total_files) {
 		fileidxrec_t fidx;
@@ -197,11 +199,13 @@ file_t* loadfiles(smb_t* smb, const char* filespec, time_t t, enum file_detail d
 			return NULL;
 	}
 
+	if(fseek(smb->sid_fp, start * sizeof(fileidxrec_t), SEEK_SET) != 0)
+		return NULL;
+
 	file_t* file_list = calloc(smb->status.total_files, sizeof(file_t));
 	if(file_list == NULL)
 		return NULL;
 
-	fseek(smb->sid_fp, start * sizeof(fileidxrec_t), SEEK_SET);
 	size_t offset = start;
 	size_t cnt = 0;
 	while(!feof(smb->sid_fp) && offset < smb->status.total_files) {
@@ -407,7 +411,10 @@ bool batch_file_add(scfg_t* cfg, uint usernumber, enum XFER_TYPE type, file_t* f
 	FILE* fp = batch_list_open(cfg, usernumber, type, /* create: */true);
 	if(fp == NULL)
 		return false;
-	fseek(fp, 0, SEEK_END);
+	if(fseek(fp, 0, SEEK_END) != 0) {
+		fclose(fp);
+		return false;
+	}
 	fprintf(fp, "\n[%s]\n", f->name);
 	if(f->dir >= 0 && f->dir < cfg->total_dirs)
 		fprintf(fp, "dir=%s\n", cfg->dir[f->dir]->code);
@@ -760,7 +767,11 @@ long create_archive(const char* archive, const char* format
 			safe_snprintf(error, maxerrlen, "%d opening %s", errno, filename);
 			break;
 		}
-		fstat(fileno(fp), &st);
+		if(fstat(fileno(fp), &st) != 0) {
+			safe_snprintf(error, maxerrlen, "%d fstat %s", errno, filename);
+			fclose(fp);
+			break;
+		}
 		if((entry = archive_entry_new()) == NULL) {
 			safe_snprintf(error, maxerrlen, "archive_entry_new returned NULL");
 			fclose(fp);