mirror of
https://github.com/curl/curl.git
synced 2026-06-22 19:45:40 +03:00
tool: replace three malloc + copy with memdup0
The function already existed for private use in var.c Closes #18185
This commit is contained in:
parent
a7bacfe6e0
commit
b3b7d65239
5 changed files with 21 additions and 24 deletions
|
|
@ -34,6 +34,7 @@
|
|||
#include "tool_cb_wrt.h"
|
||||
#include "tool_operate.h"
|
||||
#include "tool_libinfo.h"
|
||||
#include "tool_strdup.h"
|
||||
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
|
|
@ -322,12 +323,9 @@ static char *parse_filename(const char *ptr, size_t len)
|
|||
char *q;
|
||||
char stop = '\0';
|
||||
|
||||
/* simple implementation of strndup() */
|
||||
copy = malloc(len + 1);
|
||||
copy = memdup0(ptr, len);
|
||||
if(!copy)
|
||||
return NULL;
|
||||
memcpy(copy, ptr, len);
|
||||
copy[len] = '\0';
|
||||
|
||||
p = copy;
|
||||
if(*p == '\'' || *p == '"') {
|
||||
|
|
@ -438,11 +436,9 @@ static void write_linked_location(CURL *curl, const char *location,
|
|||
goto locout;
|
||||
|
||||
/* Create a null-terminated and whitespace-stripped copy of Location: */
|
||||
copyloc = malloc(llen + 1);
|
||||
copyloc = memdup0(loc, llen);
|
||||
if(!copyloc)
|
||||
goto locout;
|
||||
memcpy(copyloc, loc, llen);
|
||||
copyloc[llen] = 0;
|
||||
|
||||
/* The original URL to use as a base for a relative redirect URL */
|
||||
if(curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &locurl))
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*
|
||||
***************************************************************************/
|
||||
#include "tool_strdup.h"
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
char *strdup(const char *str)
|
||||
|
|
@ -42,3 +43,14 @@ char *strdup(const char *str)
|
|||
return newstr;
|
||||
}
|
||||
#endif
|
||||
|
||||
char *memdup0(const char *data, size_t len)
|
||||
{
|
||||
char *p = malloc(len + 1);
|
||||
if(!p)
|
||||
return NULL;
|
||||
if(len)
|
||||
memcpy(p, data, len);
|
||||
p[len] = 0;
|
||||
return p;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,5 +28,6 @@
|
|||
#ifndef HAVE_STRDUP
|
||||
extern char *strdup(const char *str);
|
||||
#endif
|
||||
char *memdup0(const char *data, size_t len);
|
||||
|
||||
#endif /* HEADER_TOOL_STRDUP_H */
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "tool_doswin.h"
|
||||
#include "tool_urlglob.h"
|
||||
#include "tool_vms.h"
|
||||
#include "tool_strdup.h"
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#define GLOBERROR(string, column, code) \
|
||||
|
|
@ -45,13 +46,10 @@ static CURLcode glob_fixed(struct URLGlob *glob, char *fixed, size_t len)
|
|||
if(!pat->content.Set.elements)
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
pat->content.Set.elements[0] = malloc(len + 1);
|
||||
pat->content.Set.elements[0] = memdup0(fixed, len);
|
||||
if(!pat->content.Set.elements[0])
|
||||
return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
|
||||
|
||||
memcpy(pat->content.Set.elements[0], fixed, len);
|
||||
pat->content.Set.elements[0][len] = 0;
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
16
src/var.c
16
src/var.c
|
|
@ -31,23 +31,13 @@
|
|||
#include "tool_parsecfg.h"
|
||||
#include "tool_paramhlp.h"
|
||||
#include "tool_writeout_json.h"
|
||||
#include "tool_strdup.h"
|
||||
#include "var.h"
|
||||
#include "memdebug.h" /* keep this as LAST include */
|
||||
|
||||
#define MAX_EXPAND_CONTENT 10000000
|
||||
#define MAX_VAR_LEN 128 /* max length of a name */
|
||||
|
||||
static char *Memdup(const char *data, size_t len)
|
||||
{
|
||||
char *p = malloc(len + 1);
|
||||
if(!p)
|
||||
return NULL;
|
||||
if(len)
|
||||
memcpy(p, data, len);
|
||||
p[len] = 0;
|
||||
return p;
|
||||
}
|
||||
|
||||
/* free everything */
|
||||
void varcleanup(struct GlobalConfig *global)
|
||||
{
|
||||
|
|
@ -208,7 +198,7 @@ static ParameterError varfunc(struct GlobalConfig *global,
|
|||
free(c);
|
||||
|
||||
clen = curlx_dyn_len(out);
|
||||
c = Memdup(curlx_dyn_ptr(out), clen);
|
||||
c = memdup0(curlx_dyn_ptr(out), clen);
|
||||
if(!c) {
|
||||
err = PARAM_NO_MEM;
|
||||
break;
|
||||
|
|
@ -379,7 +369,7 @@ static ParameterError addvariable(struct GlobalConfig *global,
|
|||
if(p) {
|
||||
memcpy(p->name, name, nlen);
|
||||
|
||||
p->content = contalloc ? content : Memdup(content, clen);
|
||||
p->content = contalloc ? content : memdup0(content, clen);
|
||||
if(p->content) {
|
||||
p->clen = clen;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue