httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@hyperreal.org
Subject cvs commit: apache-1.3/src/modules/standard mod_so.c
Date Fri, 01 Jan 1999 20:27:48 GMT
rse         99/01/01 12:27:48

  Modified:    src      CHANGES
               src/include ap_mmn.h http_config.h
               src/modules/standard mod_so.c
  Log:
  Added MODULE_MAGIC_COOKIE as the first field in a module structure to
  allow us to distinguish between a garbled DSO (or even a file which isn't
  an Apache module DSO at all) and a DSO which doesn't match the current
  Apache API.
  
  Submitted by: Ralf S. Engelschall
  PR: 3152
  
  Revision  Changes    Path
  1.1188    +5 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1187
  retrieving revision 1.1188
  diff -u -r1.1187 -r1.1188
  --- CHANGES	1999/01/01 19:50:20	1.1187
  +++ CHANGES	1999/01/01 20:27:45	1.1188
  @@ -1,4 +1,9 @@
   Changes with Apache 1.3.4
  +
  +  *) Added MODULE_MAGIC_COOKIE as the first field in a module structure to
  +     allow us to distinguish between a garbled DSO (or even a file which isn't
  +     an Apache module DSO at all) and a DSO which doesn't match the current
  +     Apache API. [Ralf S. Engelschall] PR#3152
    
     *) Two minor enhancements to mod_rewrite: First RewriteRule now also
        supports the ``nocase|NC'' flag (as RewriteCond already does for ages) to
  
  
  
  1.17      +3 -0      apache-1.3/src/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ap_mmn.h	1999/01/01 19:04:39	1.16
  +++ ap_mmn.h	1999/01/01 20:27:47	1.17
  @@ -193,7 +193,10 @@
    * 19981229             - mod_negotiation overhaul -- added ap_make_etag()
    *                        and added vlist_validator to request_rec.
    * 19990101             - renamed macro escape_uri() to ap_escape_uri()
  + *                      - Added MODULE_MAGIC_COOKIE to identify module structures
    */
  +
  +#define MODULE_MAGIC_COOKIE 0x41503133UL /* "AP13" */
   
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
   #define MODULE_MAGIC_NUMBER_MAJOR 19990101
  
  
  
  1.99      +6 -1      apache-1.3/src/include/http_config.h
  
  Index: http_config.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/http_config.h,v
  retrieving revision 1.98
  retrieving revision 1.99
  diff -u -r1.98 -r1.99
  --- http_config.h	1999/01/01 19:04:40	1.98
  +++ http_config.h	1999/01/01 20:27:47	1.99
  @@ -186,6 +186,10 @@
    */
   
   typedef struct module_struct {
  +    unsigned long magic;        /* Magic Cookie to identify a module structure;
  +                                 * It's mainly important for the DSO facility
  +                                 * (see also mod_so).
  +                                 */
       int version;		/* API version, *not* module version;
   				 * check that module is compatible with this
   				 * version of the server.
  @@ -281,7 +285,8 @@
    * signal an error). See src/include/ap_mmn.h for MMN version history.
    */
   
  -#define STANDARD_MODULE_STUFF	MODULE_MAGIC_NUMBER_MAJOR, \
  +#define STANDARD_MODULE_STUFF	MODULE_MAGIC_COOKIE, \
  +				MODULE_MAGIC_NUMBER_MAJOR, \
   				MODULE_MAGIC_NUMBER_MINOR, \
   				-1, \
   				__FILE__, \
  
  
  
  1.29      +12 -2     apache-1.3/src/modules/standard/mod_so.c
  
  Index: mod_so.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_so.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- mod_so.c	1999/01/01 19:05:13	1.28
  +++ mod_so.c	1999/01/01 20:27:48	1.29
  @@ -247,11 +247,21 @@
        * symbol name.
        */
       if (!(modp = (module *)(ap_os_dso_sym(modhandle, modname)))) {
  -	return ap_pstrcat(cmd->pool, "Can't find module ", modname,
  -		       " in file ", filename, ":", ap_os_dso_error(), NULL);
  +	return ap_pstrcat(cmd->pool, "Can't locate API module structure `", modname,
  +		       "' in file ", szModuleFile, ": ", ap_os_dso_error(), NULL);
       }
       modi->modp = modp;
       modp->dynamic_load_handle = modhandle;
  +
  +    /* 
  +     * Make sure the found module structure is really a module structure
  +     * 
  +     */
  +    if (modp->magic != MODULE_MAGIC_COOKIE) {
  +        return ap_pstrcat(cmd->pool, "API module structure `", modname,
  +                          "' in file ", szModuleFile, " is garbled -"
  +                          " perhaps this is not an Apache module DSO?", NULL);
  +    }
   
       /* 
        * Add this module to the Apache core structures
  
  
  

Mime
View raw message