mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 08:38:49 -05:00
mime: put the boundary buffer into the curl_mime struct
... instead of allocating it separately and point to it. It is fixed-size and always used for each part. Closes #3561
This commit is contained in:
parent
84c10dc1ba
commit
179927c12a
14
lib/mime.c
14
lib/mime.c
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -1122,8 +1122,6 @@ void curl_mime_free(curl_mime *mime)
|
|||||||
Curl_mime_cleanpart(part);
|
Curl_mime_cleanpart(part);
|
||||||
free(part);
|
free(part);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(mime->boundary);
|
|
||||||
free(mime);
|
free(mime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1220,18 +1218,10 @@ curl_mime *curl_mime_init(struct Curl_easy *easy)
|
|||||||
mime->firstpart = NULL;
|
mime->firstpart = NULL;
|
||||||
mime->lastpart = NULL;
|
mime->lastpart = NULL;
|
||||||
|
|
||||||
/* Get a part boundary. */
|
|
||||||
mime->boundary = malloc(24 + MIME_RAND_BOUNDARY_CHARS + 1);
|
|
||||||
if(!mime->boundary) {
|
|
||||||
free(mime);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(mime->boundary, '-', 24);
|
memset(mime->boundary, '-', 24);
|
||||||
if(Curl_rand_hex(easy, (unsigned char *) mime->boundary + 24,
|
if(Curl_rand_hex(easy, (unsigned char *) &mime->boundary[24],
|
||||||
MIME_RAND_BOUNDARY_CHARS + 1)) {
|
MIME_RAND_BOUNDARY_CHARS + 1)) {
|
||||||
/* failed to get random separator, bail out */
|
/* failed to get random separator, bail out */
|
||||||
free(mime->boundary);
|
|
||||||
free(mime);
|
free(mime);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -88,13 +88,16 @@ typedef struct {
|
|||||||
size_t offset; /* State-dependent offset. */
|
size_t offset; /* State-dependent offset. */
|
||||||
} mime_state;
|
} mime_state;
|
||||||
|
|
||||||
|
/* mimimum buffer size for the boundary string */
|
||||||
|
#define MIME_BOUNDARY_LEN (24 + MIME_RAND_BOUNDARY_CHARS + 1)
|
||||||
|
|
||||||
/* A mime multipart. */
|
/* A mime multipart. */
|
||||||
struct curl_mime_s {
|
struct curl_mime_s {
|
||||||
struct Curl_easy *easy; /* The associated easy handle. */
|
struct Curl_easy *easy; /* The associated easy handle. */
|
||||||
curl_mimepart *parent; /* Parent part. */
|
curl_mimepart *parent; /* Parent part. */
|
||||||
curl_mimepart *firstpart; /* First part. */
|
curl_mimepart *firstpart; /* First part. */
|
||||||
curl_mimepart *lastpart; /* Last part. */
|
curl_mimepart *lastpart; /* Last part. */
|
||||||
char *boundary; /* The part boundary. */
|
char boundary[MIME_BOUNDARY_LEN]; /* The part boundary. */
|
||||||
mime_state state; /* Current readback state. */
|
mime_state state; /* Current readback state. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user