You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2003/02/19 07:46:37 UTC
DO NOT REPLY [Bug 17191] New: -
Patch for mod_auth_digest to remove use of tmpnam
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17191>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17191
Patch for mod_auth_digest to remove use of tmpnam
Summary: Patch for mod_auth_digest to remove use of tmpnam
Product: Apache httpd-2.0
Version: HEAD
Platform: All
OS/Version: All
Status: NEW
Severity: Normal
Priority: Other
Component: mod_auth_digest
AssignedTo: bugs@httpd.apache.org
ReportedBy: chip@cyan.com
tmpnam is not good on win32 platforms.
I was changing it in mod_authn_mysql, and figured i could help fix
mod_auth_digest while i was at it.
--- mod_auth_digest.c Tue Feb 18 22:25:50 2003
+++ mod_auth_digest.c.new Tue Feb 18 22:36:31 2003
@@ -119,6 +119,7 @@
#include "apr_shm.h"
#include "apr_rmm.h"
#include "ap_provider.h"
+#include "apr_file_io.h" /* for apr_file_mktemp */
#include "mod_auth.h"
@@ -222,8 +223,8 @@
static apr_time_t *otn_counter; /* one-time-nonce counter */
static apr_global_mutex_t *client_lock = NULL;
static apr_global_mutex_t *opaque_lock = NULL;
-static char client_lock_name[L_tmpnam];
-static char opaque_lock_name[L_tmpnam];
+static char *client_lock_name;
+static char *opaque_lock_name;
#define DEF_SHMEM_SIZE 1000L /* ~ 12 entries */
#define DEF_NUM_BUCKETS 15L
@@ -304,10 +305,17 @@
{
unsigned long idx;
apr_status_t sts;
+ apr_file_t *tmpfile;
+ char *shm_create_name;
- /* set up client list */
+ sts = apr_file_mktemp(&tmpfile, shm_create_name, 0, ctx);
+ if (sts != APR_SUCCESS) {
+ log_error_and_cleanup("failed to allocate temp file for shared memory
segments", sts, s);
+ return;
+ }
- sts = apr_shm_create(&client_shm, shmem_size, tmpnam(NULL), ctx);
+ /* set up client list */
+ sts = apr_shm_create(&client_shm, shmem_size, shm_create_name, ctx);
if (sts != APR_SUCCESS) {
log_error_and_cleanup("failed to create shared memory segments", sts, s);
return;
@@ -326,9 +334,12 @@
client_list->tbl_len = num_buckets;
client_list->num_entries = 0;
- tmpnam(client_lock_name);
- /* FIXME: get the client_lock_name from a directive so we're portable
- * to non-process-inheriting operating systems, like Win32. */
+ sts = apr_file_mktemp(&tmpfile, client_lock_name, 0, ctx);
+ if (sts != APR_SUCCESS) {
+ log_error_and_cleanup("failed to allocate temp file for client
locking", sts, s);
+ return;
+ }
+
sts = apr_global_mutex_create(&client_lock, client_lock_name,
APR_LOCK_DEFAULT, ctx);
if (sts != APR_SUCCESS) {
@@ -346,9 +357,11 @@
}
*opaque_cntr = 1UL;
- tmpnam(opaque_lock_name);
- /* FIXME: get the opaque_lock_name from a directive so we're portable
- * to non-process-inheriting operating systems, like Win32. */
+ sts = apr_file_mktemp(&tmpfile, opaque_lock_name, 0, ctx);
+ if(sts != APR_SUCCESS) {
+ log_error_and_cleanup("failed to allocate temp file for global
locking", sts, s);
+ return;
+ }
sts = apr_global_mutex_create(&opaque_lock, opaque_lock_name,
APR_LOCK_DEFAULT, ctx);
if (sts != APR_SUCCESS) {
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org