This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a commit to branch winbuild
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git


The following commit(s) were added to refs/heads/winbuild by this push:
     new 53de5f8  several changes to resolve ambiguities in implicit casting 
int from and to size_t
53de5f8 is described below

commit 53de5f8905414452136b7bb0b7c470e51e82ecd0
Author: Massimo Manghi <mxman...@apache.org>
AuthorDate: Mon Dec 17 01:11:13 2018 +0100

    several changes to resolve ambiguities in implicit casting int from and to 
size_t
---
 ChangeLog                             |  7 ++++
 src/librivet/rivetList.c              |  4 +-
 src/mod_rivet_ng/TclWebapache.c       |  4 +-
 src/mod_rivet_ng/rivetCore.c          |  5 +--
 src/mod_rivet_ng/rivet_types.h        |  2 +-
 src/request/apache_multipart_buffer.c | 73 ++++++++++++++++++-----------------
 src/request/apache_multipart_buffer.h | 28 +++++++-------
 src/request/apache_request.c          | 46 ++++++++++++----------
 8 files changed, 91 insertions(+), 78 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5c05583..829430f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-12-17 Massimo Manghi <mxman...@apache.org>
+       * 
src/request/apache_request.c,src/request/apache_multipart_buffer.[c|h]: 
+       explicit cast to int wherever needed by calls to Tcl_* functions and 
changed 
+       int to size_t wherever required 
+       * src/mod_rivet_ng/rivet_types.h,rivetCore.c: field 'size' in structure 
typed as size_t
+       * src/mod_rivet_ng/TclWebapache.c: argument to Tcl_ReadChars explicitly 
cast to int 
+
 2018-12-16 Georgios Petasis <petas...@apache.org>
     * Readme.md: Added a Markdown README file, which shows the build status
     from Appveyor, for Windows.
diff --git a/src/librivet/rivetList.c b/src/librivet/rivetList.c
index 4847acf..5884756 100644
--- a/src/librivet/rivetList.c
+++ b/src/librivet/rivetList.c
@@ -464,10 +464,10 @@ Rivet_CommaJoinObjCmd (notUsed, interp, objc, objv)
              * calculations right!
              */
 
-             Tcl_AppendToObj (resultPtr, strPtr, walkPtr - strPtr);
+             Tcl_AppendToObj (resultPtr, strPtr, (int)(walkPtr - strPtr));
              strPtr = walkPtr - 1;
         }
-        Tcl_AppendToObj (resultPtr, strPtr, walkPtr - strPtr);
+        Tcl_AppendToObj (resultPtr, strPtr, (int)(walkPtr - strPtr));
     }
     Tcl_AppendToObj (resultPtr, "\"", 1);
     return TCL_OK;
diff --git a/src/mod_rivet_ng/TclWebapache.c b/src/mod_rivet_ng/TclWebapache.c
index 4bf8a6b..2446072 100644
--- a/src/mod_rivet_ng/TclWebapache.c
+++ b/src/mod_rivet_ng/TclWebapache.c
@@ -725,7 +725,7 @@ int TclWeb_UploadData(char *varname, Tcl_Obj *data, 
TclWebRequest *req)
        }
 
        /* Put data in a variable  */
-       Tcl_ReadChars(chan, data, ApacheUpload_size(req->upload), 0);
+       Tcl_ReadChars(chan, data, (int)ApacheUpload_size(req->upload), 0);
        if (Tcl_Close(req->interp, chan) == TCL_ERROR) {
            return TCL_ERROR;
        }
@@ -739,7 +739,7 @@ int TclWeb_UploadData(char *varname, Tcl_Obj *data, 
TclWebRequest *req)
 
 int TclWeb_UploadSize(Tcl_Obj *sz, TclWebRequest *req)
 {
-    Tcl_SetIntObj(sz, ApacheUpload_size(req->upload));
+    Tcl_SetIntObj(sz, (int)ApacheUpload_size(req->upload));
     return TCL_OK;
 }
 
diff --git a/src/mod_rivet_ng/rivetCore.c b/src/mod_rivet_ng/rivetCore.c
index 66cb9d8..2c871e9 100644
--- a/src/mod_rivet_ng/rivetCore.c
+++ b/src/mod_rivet_ng/rivetCore.c
@@ -151,7 +151,7 @@ TCL_CMD_HEADER( Rivet_MakeURL )
         {
             /* relative path */
             char* script_name = TclWeb_GetEnvVar (private,"SCRIPT_NAME");
-            int   script_name_l = strlen(script_name);
+            size_t script_name_l = strlen(script_name);
 
             // regardless the reason for a SCRIPT_NAME being undefined we
             // prevent a segfault and we revert the behavior of makeurl
@@ -1791,8 +1791,7 @@ TCL_CMD_HEADER( Rivet_LogErrorCmd )
     return TCL_OK;
 }
 
-#define TESTPANIC 0
-
+#undef TESTPANIC
 #ifdef TESTPANIC
 /*
  *----------------------------------------------------------------------
diff --git a/src/mod_rivet_ng/rivet_types.h b/src/mod_rivet_ng/rivet_types.h
index 25151c5..b8cda08 100644
--- a/src/mod_rivet_ng/rivet_types.h
+++ b/src/mod_rivet_ng/rivet_types.h
@@ -39,7 +39,7 @@ typedef struct _ApacheUpload {
     char*           tempname;
     apr_table_t*    info;
     apr_file_t*     fp;
-    long            size;
+    size_t          size;
     ApacheRequest*  req;
 } ApacheUpload;
 
diff --git a/src/request/apache_multipart_buffer.c 
b/src/request/apache_multipart_buffer.c
index 36be086..484b8f3 100644
--- a/src/request/apache_multipart_buffer.c
+++ b/src/request/apache_multipart_buffer.c
@@ -31,25 +31,25 @@
   if partial is true, partial matches are allowed at the end of the buffer.
   returns NULL if not found, or a pointer to the start of the first match.
 */
-void* my_memstr(char* haystack, int haystacklen, const char* needle,
-               int partial)
+void* my_memstr(char* haystack,int haystacklen,const char* needle,int partial)
 {
-    int needlen = strlen(needle);
+    size_t needlen = strlen(needle);
     int len = haystacklen;
     char *ptr = haystack;
 
     /* iterate through first character matches */
     while( (ptr = memchr(ptr, needle[0], len)) ) {
-       /* calculate length after match */
-       len = haystacklen - (ptr - (char *)haystack);
-
-       /* done if matches up to capacity of buffer */
-       if(memcmp(needle, ptr, needlen) == 0 &&
-          (partial || len >= needlen))
-           break;
-
-       /* next character */
-       ptr++; len--;
+               /* calculate length after match */
+               len = haystacklen - (int)(ptr - (char *)haystack);
+
+               /* done if matches up to capacity of buffer */
+               if(memcmp(needle, ptr, needlen) == 0 && (partial || len >= 
needlen))
+               {
+                       break;
+               }
+               
+               /* next character */
+               ptr++; len--;
     }
 
     return ptr;
@@ -73,7 +73,7 @@ int fill_buffer(multipart_buffer *self)
     bytes_to_read = self->bufsize - self->bytes_in_buffer;
 
     if (bytes_to_read >= self->r->remaining) {
-        bytes_to_read = self->r->remaining - strlen(self->boundary);
+        bytes_to_read = (int)(self->r->remaining - 
(apr_off_t)strlen(self->boundary));
 #ifdef DEBUG
         ap_log_rerror(MPB_ERROR, "mozilla 0.97 hack: '%ld'", 
self->r->remaining);
 #endif
@@ -118,7 +118,7 @@ char* next_line(multipart_buffer *self)
 
        /* bump the pointer */
        self->buf_begin = ptr + 1;
-       self->bytes_in_buffer -= (self->buf_begin - line);
+       self->bytes_in_buffer -= (int)(self->buf_begin - line);
     }
 
     /* no LF found */
@@ -177,17 +177,18 @@ int find_boundary(multipart_buffer *self, char *boundary)
 /*********************** external functions *********************/
 
 /* create new multipart_buffer structure */
-multipart_buffer *multipart_buffer_new(char *boundary, long length, 
request_rec *r)
+multipart_buffer *multipart_buffer_new(char *boundary, apr_off_t length, 
request_rec *r)
 {
     multipart_buffer *self = (multipart_buffer *)
        apr_pcalloc (r->pool, sizeof(multipart_buffer));
 
-    int minsize = strlen(boundary)+6;
+    size_t minsize = strlen(boundary)+6;
+
     if(minsize < FILLUNIT) minsize = FILLUNIT;
 
     self->r = r;
     self->buffer = (char *) apr_pcalloc(r->pool, minsize+1);
-    self->bufsize = minsize;
+    self->bufsize = (int)minsize;
     self->request_length = length;
     self->boundary = (char*) apr_pstrcat(r->pool, "--", boundary, NULL);
     self->boundary_next = (char*) apr_pstrcat(r->pool, "\n", self->boundary, 
NULL);
@@ -243,35 +244,35 @@ apr_table_t *multipart_buffer_headers(multipart_buffer 
*self)
 }
 
 /* read until a boundary condition */
-int multipart_buffer_read(multipart_buffer *self, char *buf, int bytes)
+size_t multipart_buffer_read(multipart_buffer *self, char *buf, size_t bytes)
 {
-    int len, max;
-    char *bound;
+       size_t  max;
+    size_t     len;
+    char*      bound;
 
     /* fill buffer if needed */
     if(bytes > self->bytes_in_buffer) fill_buffer(self);
 
     /* look for a potential boundary match, only read data up to that point */
-    if( (bound = my_memstr(self->buf_begin, self->bytes_in_buffer,
-                          self->boundary_next, 1)) ) {
-       max = bound - self->buf_begin;
-     } else {
-       max = self->bytes_in_buffer;
-     }
+    if( (bound = my_memstr(self->buf_begin, self->bytes_in_buffer, 
self->boundary_next, 1)) ) {
+               max = bound - self->buf_begin;
+    } else {
+               max = self->bytes_in_buffer;
+               }
     /* maximum number of bytes we are reading */
     len = max < bytes-1 ? max : bytes-1;
 
 
     /* if we read any data... */
-    if(len > 0) {
-       /* copy the data */
-       memcpy(buf, self->buf_begin, len);
-       buf[len] = 0;
-       if(bound && len > 0 && buf[len-1] == '\r') buf[--len] = 0;
-
-       /* update the buffer */
-       self->bytes_in_buffer -= len;
-       self->buf_begin += len;
+    if (len > 0) {
+               /* copy the data */
+               memcpy(buf, self->buf_begin, len);
+               buf[len] = 0;
+               if(bound && len > 0 && buf[len-1] == '\r') buf[--len] = 0;
+
+               /* update the buffer */
+               self->bytes_in_buffer -= (int)len;
+               self->buf_begin += len;
     }
 
 #ifdef DEBUG
diff --git a/src/request/apache_multipart_buffer.h 
b/src/request/apache_multipart_buffer.h
index 2237942..b899a46 100644
--- a/src/request/apache_multipart_buffer.h
+++ b/src/request/apache_multipart_buffer.h
@@ -30,27 +30,27 @@
 
 typedef struct _multipart_buffer {
     /* request info */
-    request_rec *r;
-    long request_length;
+    request_rec*               r;
+    apr_off_t                  request_length;
 
     /* read buffer */
-    char *buffer;
-    char *buf_begin;
-    int  bufsize;
-    int  bytes_in_buffer;
+    char*                              buffer;
+    char*                              buf_begin;
+    int                                bufsize;
+    int                                bytes_in_buffer;
 
     /* boundary info */
-    char *boundary;
-    char *boundary_next;
-    char *boundary_end;
+    char*                              boundary;
+    char*                              boundary_next;
+    char*                              boundary_end;
 } multipart_buffer;
 
-multipart_buffer       *multipart_buffer_new(char *boundary, long length, 
request_rec *r);
+multipart_buffer*      multipart_buffer_new(char* boundary,apr_off_t 
length,request_rec* r);
 ///*table*/apr_table_t *multipart_buffer_headers(multipart_buffer *self);
-int                    multipart_buffer_read(multipart_buffer *self, char 
*buf, int bytes);
-char                   *multipart_buffer_read_body(multipart_buffer *self); 
-apr_table_t            *multipart_buffer_headers(multipart_buffer *self);
-int                    multipart_buffer_eof(multipart_buffer *self);
+size_t                         multipart_buffer_read(multipart_buffer* 
self,char* buf,size_t bytes);
+char*                          multipart_buffer_read_body(multipart_buffer 
*self); 
+apr_table_t*           multipart_buffer_headers(multipart_buffer *self);
+int                                    multipart_buffer_eof(multipart_buffer 
*self);
 
 #ifdef __cplusplus
  }
diff --git a/src/request/apache_request.c b/src/request/apache_request.c
index b5f36f9..b370273 100644
--- a/src/request/apache_request.c
+++ b/src/request/apache_request.c
@@ -42,9 +42,12 @@ util_read(ApacheRequest *req, const char **rbuf)
 
     if (ap_should_client_block(r)) {
         char buff[HUGE_STRING_LEN];
-        int rsize, len_read, rpos=0;
-        long length = r->remaining;
+        int  len_read;
+               apr_off_t rpos;
+               apr_off_t rsize;
+        apr_off_t length = r->remaining;
 
+               rpos = 0;
         if (length > req->post_max && req->post_max > 0) {
             ap_log_rerror(REQ_ERROR,"entity too large (%d, max=%d)",
                                        (int)length, req->post_max);
@@ -509,14 +512,14 @@ apr_file_t *ApacheRequest_tmpfile(ApacheRequest *req, 
ApacheUpload *upload)
 int
 ApacheRequest_parse_multipart(ApacheRequest *req,const char* ct)
 {
-    request_rec        *r = req->r;
-    int                rc = OK;
-    long               length;
-    char               *boundary;
-    multipart_buffer   *mbuff;
-    ApacheUpload       *upload = NULL;
-    apr_status_t       status;
-    char               error[1024];
+    request_rec*       r = req->r;
+    int                rc = OK;
+    apr_off_t          length;
+    char*              boundary;
+    multipart_buffer*  mbuff;
+    ApacheUpload*      upload = NULL;
+    apr_status_t       status;
+    char               error[1024];
 
     if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR))) {
         return rc;
@@ -533,7 +536,7 @@ ApacheRequest_parse_multipart(ApacheRequest *req,const 
char* ct)
     }
 
     do {
-        int blen;
+        size_t blen;
         boundary = ap_getword(r->pool, &ct, '=');
         if (boundary == NULL)
             return DECLINED;
@@ -550,10 +553,12 @@ ApacheRequest_parse_multipart(ApacheRequest *req,const 
char* ct)
     }
 
     while (!multipart_buffer_eof(mbuff)) {
-        apr_table_t *header = (apr_table_t*) multipart_buffer_headers(mbuff);
-        const char *cd, *param=NULL, *filename=NULL;
-        char buff[FILLUNIT];
-        int blen;
+        apr_table_t*   header = (apr_table_t*) multipart_buffer_headers(mbuff);
+        const char*            cd;
+               const char*     param = NULL;
+               const char*             filename=NULL;
+        char                   buff[FILLUNIT];
+        size_t                         blen;
 
         if (!header) {
 #ifdef DEBUG
@@ -625,12 +630,13 @@ ApacheRequest_parse_multipart(ApacheRequest *req,const 
char* ct)
             }
 
             while ((blen = multipart_buffer_read(mbuff, buff, sizeof(buff)))) {
-               apr_size_t bytes_to_write = (apr_size_t) blen;
-               status = apr_file_write(upload->fp,buff,&bytes_to_write);
-               if (status != 0) {
-                   apr_strerror(status,error,1024); 
+                               apr_size_t bytes_to_write = (apr_size_t) blen;
+                               status = 
apr_file_write(upload->fp,buff,&bytes_to_write);
+                               
+                               if (status != 0) {
+                                       apr_strerror(status,error,1024); 
                     return HTTP_INTERNAL_SERVER_ERROR;
-               }
+                               }
                 upload->size += blen;
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@tcl.apache.org
For additional commands, e-mail: commits-h...@tcl.apache.org

Reply via email to