Hello.
Looks like a file descriptor leak?
Index: ssl_util_table.c
===================================================================
RCS file: /OpenBSD/src/usr.sbin/httpd/src/modules/ssl/ssl_util_table.c,v
retrieving revision 1.6
diff -u -r1.6 ssl_util_table.c
--- ssl_util_table.c 2 Dec 2004 19:42:47 -0000 1.6
+++ ssl_util_table.c 20 Jan 2010 20:13:22 -0000
@@ -2401,6 +2401,7 @@
if (table_p == NULL) {
if (error_p != NULL)
*error_p = TABLE_ERROR_ALLOC;
+ close(fd);
return NULL;
}
@@ -2409,6 +2410,7 @@
if (infile == NULL) {
if (error_p != NULL)
*error_p = TABLE_ERROR_OPEN;
+ close(fd);
return NULL;
}
@@ -2420,6 +2422,7 @@
free_f(table_p);
else
free(table_p);
+ close(fd);
return NULL;
}
table_p->ta_file_size = 0;
@@ -2433,6 +2436,7 @@
if (table_p->ta_magic != TABLE_MAGIC) {
if (error_p != NULL)
*error_p = TABLE_ERROR_PNT;
+ close(fd);
return NULL;
}
@@ -2442,6 +2446,7 @@
if (error_p != NULL)
*error_p = TABLE_ERROR_ALLOC;
table_p->ta_free(table_p);
+ close(fd);
return NULL;
}
@@ -2451,6 +2456,7 @@
*error_p = TABLE_ERROR_READ;
table_p->ta_free(table_p->ta_buckets);
table_p->ta_free(table_p);
+ close(fd);
return NULL;
}
@@ -2476,6 +2482,7 @@
table_p->ta_free(entry_p);
table_p->ta_free(table_p);
/* the other table elements will not be freed */
+ close(fd);
return NULL;
}
if (fread(&entry, sizeof(struct table_shell_st), 1, infile) != 1) {
@@ -2486,6 +2493,7 @@
table_p->ta_free(entry_p);
table_p->ta_free(table_p);
/* the other table elements will not be freed */
+ close(fd);
return NULL;
}
@@ -2498,6 +2506,7 @@
table_p->ta_free(table_p->ta_buckets);
table_p->ta_free(table_p);
/* the other table elements will not be freed */
+ close(fd);
return NULL;
}
entry_p->te_key_size = entry.te_key_size;
@@ -2517,6 +2526,7 @@
table_p->ta_free(entry_p);
table_p->ta_free(table_p);
/* the other table elements will not be freed */
+ close(fd);
return NULL;
}