You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2001/07/31 18:34:14 UTC

cvs commit: httpd-2.0/modules/cache mod_file_cache.c

wrowe       01/07/31 09:34:14

  Modified:    modules/dav/fs lock.c
               modules/cache mod_file_cache.c
  Log:
    Provide some cast safety tests and close the _last_ of the build errors
    report (at -w3) by Win32 in the server.
  
  Revision  Changes    Path
  1.19      +10 -2     httpd-2.0/modules/dav/fs/lock.c
  
  Index: lock.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/dav/fs/lock.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- lock.c	2001/03/28 16:34:03	1.18
  +++ lock.c	2001/07/31 16:34:14	1.19
  @@ -845,8 +845,16 @@
   	goto loaderror;
       }
   
  -    dav_set_bufsize(p, pbuf, finfo.size);
  -    amt = finfo.size;
  +    if (finfo.size != (apr_size_t)finfo.size) {
  +	err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,
  +			    apr_psprintf(p,
  +					"Opened but rejected huge file %s",
  +					pbuf->buf));
  +	goto loaderror;
  +    }
  +
  +    amt = (apr_size_t)finfo.size;
  +    dav_set_bufsize(p, pbuf, amt);
       if (apr_file_read(file, pbuf->buf, &amt) != APR_SUCCESS
           || amt != finfo.size) {
   	err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,
  
  
  
  1.60      +10 -3     httpd-2.0/modules/cache/mod_file_cache.c
  
  Index: mod_file_cache.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/cache/mod_file_cache.c,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- mod_file_cache.c	2001/07/24 20:38:01	1.59
  +++ mod_file_cache.c	2001/07/31 16:34:14	1.60
  @@ -206,6 +206,11 @@
   	    "mod_file_cache: %s isn't a regular file, skipping", fspec);
   	return;
       }
  +    if (tmp.finfo.size > AP_MAX_SENDFILE) {
  +	ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, 0, cmd->server,
  +	    "mod_file_cache: %s is too large to cache, skipping", fspec);
  +	return;
  +    }
   
       rc = apr_file_open(&fd, fspec, APR_READ | APR_BINARY | APR_XTHREAD,
                          APR_OS_DEFAULT, cmd->pool);
  @@ -226,7 +231,8 @@
            * XXX: APR_HAS_LARGE_FILES issue; need to reject this request if
            * size is greater than MAX(apr_size_t) (perhaps greater than 1M?).
            */
  -        if ((rc = apr_mmap_create(&new_file->mm, fd, 0, new_file->finfo.size,
  +        if ((rc = apr_mmap_create(&new_file->mm, fd, 0, 
  +                                  (apr_size_t)new_file->finfo.size,
                                     APR_MMAP_READ, cmd->pool)) != APR_SUCCESS) { 
               apr_file_close(fd);
               ap_log_error(APLOG_MARK, APLOG_WARNING, rc, cmd->server,
  @@ -327,7 +333,7 @@
       apr_bucket *b;
       apr_bucket_brigade *bb = apr_brigade_create(r->pool);
   
  -    b = apr_bucket_mmap_create(file->mm, 0, file->finfo.size);
  +    b = apr_bucket_mmap_create(file->mm, 0, (apr_size_t)file->finfo.size);
       APR_BRIGADE_INSERT_TAIL(bb, b);
       b = apr_bucket_eos_create();
       APR_BRIGADE_INSERT_TAIL(bb, b);
  @@ -344,7 +350,8 @@
       apr_bucket *b;
       apr_bucket_brigade *bb = apr_brigade_create(r->pool);
   
  -    b = apr_bucket_file_create(file->file, 0, file->finfo.size, r->pool);
  +    b = apr_bucket_file_create(file->file, 0, 
  +                               (apr_size_t)file->finfo.size, r->pool);
       APR_BRIGADE_INSERT_TAIL(bb, b);
       b = apr_bucket_eos_create();
       APR_BRIGADE_INSERT_TAIL(bb, b);