Ver Fonte

64 bit fix for forward_body_data

bel há 10 anos atrás
pai
commit
3400ef0725
1 ficheiros alterados com 4 adições e 3 exclusões
  1. 4 3
      src/civetweb.c

+ 4 - 3
src/civetweb.c

@@ -4099,7 +4099,8 @@ static int forward_body_data(struct mg_connection *conn, FILE *fp,
 {
     const char *expect, *body;
     char buf[MG_BUF_LEN];
-    int to_read, nread, buffered_len, success = 0;
+    int to_read, nread, success = 0;
+    int64_t buffered_len;
 
     expect = mg_get_header(conn, "Expect");
     assert(fp != NULL);
@@ -4113,8 +4114,7 @@ static int forward_body_data(struct mg_connection *conn, FILE *fp,
             (void) mg_printf(conn, "%s", "HTTP/1.1 100 Continue\r\n\r\n");
         }
 
-        body = conn->buf + conn->request_len + conn->consumed_content;
-        buffered_len = (int)(&conn->buf[conn->data_len] - body);
+        buffered_len = (int64_t)(conn->data_len) - (int64_t)conn->request_len - conn->consumed_content;
         assert(buffered_len >= 0);
         assert(conn->consumed_content == 0);
 
@@ -4122,6 +4122,7 @@ static int forward_body_data(struct mg_connection *conn, FILE *fp,
             if ((int64_t) buffered_len > conn->content_len) {
                 buffered_len = (int) conn->content_len;
             }
+            body = conn->buf + conn->request_len + conn->consumed_content;
             push(fp, sock, ssl, body, (int64_t) buffered_len);
             conn->consumed_content += buffered_len;
         }